Git Branch என்றால் என்ன?
Git-ல், ஒரு கிளை என்பது ஒரு தனி பணிமனை போன்றது, அங்கு நீங்கள் முக்கிய திட்டத்தை பாதிக்காமல் மாற்றங்களைச் செய்யலாம் மற்றும் புதிய யோசனைகளை முயற்சிக்கலாம். இது உங்கள் குறியீட்டிற்கான "இணை பிரபஞ்சம்" போன்றது.
ஏன் கிளைகளைப் பயன்படுத்த வேண்டும்?
கிளைகள் முக்கிய கிளையை தடையின்றி வெவ்வேறு திட்ட பகுதிகளில், புதிய அம்சங்கள் அல்லது பிழை திருத்தங்கள் போன்றவற்றில் வேலை செய்ய உங்களை அனுமதிக்கின்றன.
கிளையை உருவாக்க பொதுவான காரணங்கள்
புதிய அம்சத்தை உருவாக்குதல்
புதிய செயல்பாடுகளை உருவாக்குதல்
பிழையை சரிசெய்தல்
குறைபாடுகளை சரிசெய்தல்
யோசனைகளை சோதித்தல்
புதிய கருத்துக்களை சோதனை செய்தல்
எடுத்துக்காட்டு: Git உடன் மற்றும் இல்லாமல்
உங்களிடம் ஒரு பெரிய திட்டம் உள்ளது என்று வைத்துக்கொள்வோம், மேலும் அதன் வடிவமைப்பைப் புதுப்பிக்க வேண்டும்.
Git இல்லாமல்:
- நேரடி பதிப்பை பாதிக்காமல் இருக்க அனைத்து தொடர்புடைய கோப்புகளின் நகல்களை உருவாக்கவும்
- வடிவமைப்புடன் வேலை செய்யத் தொடங்கி, குறியீடு மற்ற கோப்புகளில் உள்ள குறியீட்டைச் சார்ந்திருப்பதைக் கண்டறியவும், அவையும் மாற்றப்பட வேண்டும்!
- சார்ந்த கோப்புகளின் நகல்களையும் உருவாக்கவும். ஒவ்வொரு கோப்பு சார்பும் சரியான கோப்புப் பெயரைக் குறிப்பிடுவதை உறுதிப்படுத்தவும்
- அவசரம்! திட்டத்தில் வேறெங்கோ ஒரு தொடர்பில்லாத பிழை உள்ளது, அதை விரைவாக சரிசெய்ய வேண்டும்!
- உங்கள் அனைத்து கோப்புகளையும் சேமித்து, நீங்கள் பணிபுரிந்த நகல்களின் பெயர்களைக் குறிக்கவும்
- தொடர்பில்லாத பிழையில் வேலை செய்து, அதை சரிசெய்ய குறியீட்டைப் புதுப்பிக்கவும்
- வடிவமைப்பிற்குத் திரும்பி, அங்குள்ள வேலையை முடிக்கவும்
- புதுப்பிக்கப்பட்ட வடிவமைப்பு நேரடி பதிப்பில் இருக்கும் வகையில் குறியீட்டை நகலெடுக்கவும் அல்லது கோப்புகளை மறுபெயரிடவும்
- (2 வாரங்களுக்குப் பிறகு, நீங்கள் சரிசெய்த பிறகு புதிய வடிவமைப்பு பதிப்பில் தொடர்பில்லாத பிழை சரிசெய்யப்படவில்லை என்பதை நீங்கள் உணர்கிறீர்கள்)
Git உடன்:
- new-design என்ற புதிய கிளையுடன், முக்கிய கிளையை பாதிக்காமல் நேரடியாக குறியீட்டைத் திருத்தவும்
- அவசரம்! திட்டத்தில் வேறெங்கோ ஒரு தொடர்பில்லாத பிழை உள்ளது, அதை விரைவாக சரிசெய்ய வேண்டும்!
- முக்கிய திட்டத்திலிருந்து small-error-fix என்ற புதிய கிளையை உருவாக்கவும்
- தொடர்பில்லாத பிழையை சரிசெய்து small-error-fix கிளையை முக்கிய கிளையுடன் இணைக்கவும்
- நீங்கள் new-design கிளைக்குத் திரும்பி, அங்குள்ள வேலையை முடிக்கவும்
- new-design கிளையை முக்கிய கிளையுடன் இணைக்கவும் (நீங்கள் தவறவிட்ட சிறிய பிழை திருத்தத்திற்கு எச்சரிக்கப்படுவீர்கள்)
கிளைகள் முக்கிய கிளையை பாதிக்காமல் வெவ்வேறு திட்ட பகுதிகளில் வேலை செய்ய உங்களை அனுமதிக்கின்றன.
வேலை முடிந்ததும், ஒரு கிளையை முக்கிய திட்டத்துடன் இணைக்கலாம்.
நீங்கள் கிளைகளுக்கு இடையே மாறலாம் மற்றும் அவை ஒன்றுக்கொன்று தலையிடாமல் வெவ்வேறு திட்டங்களில் வேலை செய்யலாம்.
Git-ல் கிளை உருவாக்குவது மிகவும் இலகுவானது மற்றும் வேகமானது!
புதிய கிளையை உருவாக்குதல்
நீங்கள் ஒரு புதிய அம்சத்தைச் சேர்க்க விரும்புகிறீர்கள் என்று வைத்துக்கொள்வோம். அதற்காக நீங்கள் ஒரு புதிய கிளையை உருவாக்கலாம்.
எங்கள் index.html பக்கத்தில் சில புதிய அம்சங்களைச் சேர்ப்போம்.
நாங்கள் எங்கள் உள்ளூர் களஞ்சியத்தில் வேலை செய்கிறோம், மேலும் முக்கிய திட்டத்தை தொந்தரவு செய்யவோ அல்லது சேதப்படுத்தவோ விரும்பவில்லை.
எனவே நாங்கள் ஒரு புதிய கிளையை உருவாக்குகிறோம்:
எடுத்துக்காட்டு
git branch hello-world-images
இப்போது நாம் "hello-world-images" என்ற புதிய கிளையை உருவாக்கியுள்ளோம்.
அனைத்து கிளைகளையும் பட்டியலிடுதல்
நாங்கள் ஒரு புதிய கிளையை உருவாக்கியுள்ளோம் என்பதை உறுதிப்படுத்துவோம்.
உங்கள் களஞ்சியத்தில் உள்ள அனைத்து கிளைகளையும் பார்க்க:
எடுத்துக்காட்டு
git branch
hello-world-images
* master
"hello-world-images" என்ற பெயருடன் புதிய கிளையை நாம் காணலாம், ஆனால் master-ன் அடுத்தில் உள்ள * நாம் தற்போது அந்தக் கிளையில் இருப்பதைக் குறிக்கிறது.
கிளைகளுக்கு இடையே மாறுதல்
checkout என்பது ஒரு கிளையை சரிபார்க்க பயன்படுத்தப்படும் கட்டளையாகும்.
தற்போதைய கிளையிலிருந்து, கட்டளையின் முடிவில் குறிப்பிடப்பட்ட கிளைக்கு நம்மை நகர்த்துகிறது:
எடுத்துக்காட்டு
git checkout hello-world-images
Switched to branch 'hello-world-images'
இப்போது நீங்கள் முக்கிய கிளையை பாதிக்காமல் உங்கள் புதிய கிளையில் வேலை செய்யலாம்.
ஒரு கிளையில் வேலை செய்தல்
இப்போது நாங்கள் எங்கள் தற்போதைய பணிமனையை master கிளையிலிருந்து புதிய கிளைக்கு நகர்த்தியுள்ளோம்.
உங்களுக்கு பிடித்த எடிட்டரைத் திறந்து சில மாற்றங்களைச் செய்யவும்.
இந்த எடுத்துக்காட்டிற்கு, நாங்கள் ஒரு படத்தை (img_hello_world.jpg) பணி கோப்புறையில் சேர்த்துள்ளோம் மற்றும் index.html கோப்பில் ஒரு வரி குறியீட்டைச் சேர்த்துள்ளோம்:
எடுத்துக்காட்டு
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<div><img src="img_hello_world.jpg" alt="Hello World from Space"
style="width:100%;max-width:960px"></div>
<p>This is the first file in my new Git Repo.</p>
<p>A new line in our file!</p>
</body>
</html>
நாங்கள் ஒரு கோப்பில் மாற்றங்களைச் செய்துள்ளோம் மற்றும் பணி அடைவில் ஒரு புதிய கோப்பைச் சேர்த்துள்ளோம் (முக்கிய கிளையின் அதே அடைவு).
இப்போது தற்போதைய கிளையின் நிலையைச் சரிபார்க்கவும்:
எடுத்துக்காட்டு
git status
On branch hello-world-images
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
modified: index.html
Untracked files:
(use "git add ..." to include in what will be committed)
img_hello_world.jpg
no changes added to commit (use "git add" and/or "git commit -a")
எனவே இங்கு என்ன நடக்கிறது என்று பார்ப்போம்:
- எங்கள் index.html-ல் மாற்றங்கள் உள்ளன, ஆனால் கோப்பு commit-க்கு staged அல்ல
- img_hello_world.jpg கண்காணிக்கப்படவில்லை
எனவே இந்தக் கிளைக்கான Staging Environment-ல் இரண்டு கோப்புகளையும் சேர்க்க வேண்டும்:
எடுத்துக்காட்டு
git add --all
தனிப்பட்ட கோப்புப் பெயர்களுக்குப் பதிலாக --all பயன்படுத்துவது அனைத்து மாற்றப்பட்ட (புதிய, மாற்றப்பட்ட மற்றும் நீக்கப்பட்ட) கோப்புகளையும் Stage செய்யும்.
கிளையின் நிலையைச் சரிபார்க்கவும்:
எடுத்துக்காட்டு
git status
On branch hello-world-images
Changes to be committed:
(use "git restore --staged ..." to unstage)
new file: img_hello_world.jpg
modified: index.html
எங்கள் மாற்றங்களில் நாங்கள் மகிழ்ச்சியடைகிறோம். எனவே அவற்றை கிளைக்கு commit செய்வோம்:
எடுத்துக்காட்டு
git commit -m "Added image to Hello World"
[hello-world-images 0312c55] Added image to Hello World
2 files changed, 1 insertion(+)
create mode 100644 img_hello_world.jpg
இப்போது நம்மிடம் master கிளையிலிருந்து வேறுபட்ட ஒரு புதிய கிளை உள்ளது.
குறிப்பு:
checkout-ல் -b விருப்பத்தைப் பயன்படுத்துவது ஒரு புதிய கிளையை உருவாக்கும், மேலும் அது இல்லையென்றால் அதற்கு நகரும்.
கிளைகளுக்கு இடையே மாறுதல்
வெவ்வேறு கிளைகளுடன் வேலை செய்வது எவ்வளவு விரைவானது மற்றும் எளிதானது, மேலும் அது எவ்வளவு நன்றாக வேலை செய்கிறது என்பதை இப்போது பார்ப்போம்.
நாம் தற்போது hello-world-images கிளையில் இருக்கிறோம். இந்தக் கிளையில் ஒரு படத்தைச் சேர்த்தோம், எனவே தற்போதைய அடைவில் உள்ள கோப்புகளை பட்டியலிடுவோம்:
எடுத்துக்காட்டு
ls
README.md bluestyle.css img_hello_world.jpg index.html
புதிய கோப்பு img_hello_world.jpg-ஐ நாம் காணலாம், மேலும் html கோப்பைத் திறந்தால், குறியீடு மாற்றப்பட்டிருப்பதைக் காணலாம். எல்லாம் இருக்க வேண்டியதைப் போலவே உள்ளது.
இப்போது, நாம் master-க்கு கிளை மாறும்போது என்ன நடக்கிறது என்று பார்ப்போம்.
எடுத்துக்காட்டு
git checkout master
Switched to branch 'master'
புதிய படம் இந்தக் கிளையின் ஒரு பகுதியாக இல்லை. தற்போதைய அடைவில் உள்ள கோப்புகளை மீண்டும் பட்டியலிடவும்:
எடுத்துக்காட்டு
ls
README.md bluestyle.css index.html
img_hello_world.jpg இனி இல்லை! மேலும் html கோப்பைத் திறந்தால், குறியீடு மாற்றத்திற்கு முன் இருந்ததற்குத் திரும்பியிருப்பதைக் காணலாம்.
கிளைகளுடன் வேலை செய்வது எவ்வளவு எளிதானது என்று பாருங்கள்? இது வெவ்வேறு விஷயங்களில் வேலை செய்ய உங்களை எவ்வாறு அனுமதிக்கிறது?
அவசர கிளை
இப்போது நாம் hello-world-images-உடன் இன்னும் முடிக்கவில்லை, ஆனால் master-ல் ஒரு பிழையை சரிசெய்ய வேண்டும் என்று கற்பனை செய்து பாருங்கள்.
நான் master-ஐ நேரடியாக குழப்ப விரும்பவில்லை, மேலும் hello-world-images-ஐ குழப்ப விரும்பவில்லை, ஏனெனில் அது இன்னும் முடியவில்லை.
எனவே அவசரத்தை சமாளிக்க ஒரு புதிய கிளையை உருவாக்குகிறோம்:
எடுத்துக்காட்டு
git checkout -b emergency-fix
Switched to a new branch 'emergency-fix'
இப்போது நாம் master-லிருந்து ஒரு புதிய கிளையை உருவாக்கி, அதற்கு மாறியுள்ளோம். மற்ற கிளைகளை தொந்தரவு செய்யாமல் பிழையை பாதுகாப்பாக சரிசெய்யலாம்.
எங்கள் கற்பனை பிழையை சரிசெய்வோம்:
எடுத்துக்காட்டு
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
<link rel="stylesheet" href="bluestyle.css">
</head>
<body>
<h1>Hello world!</h1>
<p>This is the first file in my new Git Repo.</p>
<p>This line is here to show how merging works.</p>
</body>
</html>
இந்தக் கோப்பில் மாற்றங்களைச் செய்துள்ளோம், மேலும் அந்த மாற்றங்களை master கிளைக்கு பெற வேண்டும்.
நிலையைச் சரிபார்க்கவும்:
எடுத்துக்காட்டு
git status
On branch emergency-fix
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
கோப்பை stage செய்யவும், மற்றும் commit செய்யவும்:
எடுத்துக்காட்டு
git add index.html
git commit -m "updated index.html with emergency fix"
[emergency-fix dfa79db] updated index.html with emergency fix
1 file changed, 1 insertion(+), 1 deletion(-)
இப்போது master-க்கான ஒரு திருத்தம் தயாராக உள்ளது, மேலும் இரண்டு கிளைகளையும் இணைக்க வேண்டும்.
கிளையை நீக்குதல்
ஒரு கிளையுடன் முடிந்ததும், அதை நீக்கலாம்:
எடுத்துக்காட்டு
git branch -d hello-world-images
இது hello-world-images என்ற கிளையை நீக்கும் (அது ஏற்கனவே இணைக்கப்பட்டிருந்தால்).
கிளைகளுடன் வேலை செய்வதற்கான சிறந்த நடைமுறைகள்
சிறந்த நடைமுறைகள்:
- தெளிவான, விளக்கமான கிளைப் பெயர்களைப் பயன்படுத்தவும் (feature/login-page அல்லது bugfix/header-crash போன்றவை)
- ஒவ்வொரு கிளையையும் ஒரு ஒற்றை நோக்கம் அல்லது அம்சத்தில் கவனம் செலுத்த வைக்கவும்
- உங்கள் கிளையை புதுப்பித்துக்கொள்ள முக்கிய கிளையிலிருந்து மாற்றங்களை தவறாமல் இணைக்கவும்
- உங்கள் களஞ்சியத்தை சுத்தமாக வைத்திருக்க இனி தேவையில்லாத கிளைகளை நீக்கவும்
நடைமுறை எடுத்துக்காட்டுகள்
கிளையை மறுபெயரிடு
git branch -m old-name new-name
அனைத்து கிளைகளையும் பட்டியலிடு
git branch
கிளைகளை மாற்று
git checkout branch-name அல்லது git switch branch-name
கிளையை நீக்கு (இணைக்கப்படவில்லை)
git branch -D branch-name
நீங்கள் எந்த கிளையில் இருக்கிறீர்கள் என்பதைப் பார்
git status
சிக்கல் தீர்வு
⚠️ முக்கியமான குறிப்புகள்:
- முக்கிய கிளையில் உங்கள் மாற்றங்களைக் காணவில்லை என்றால், நினைவில் கொள்ளுங்கள்: ஒரு கிளையில் உள்ள மாற்றங்கள் நீங்கள் அவற்றை இணைக்கும் வரை அங்கேயே இருக்கும்.
- ஒரு கிளையை நீக்கும்போது, அது முதலில் இணைக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும். இணைக்கப்படாத கிளையை நீக்க முயற்சித்தால், Git அதை செய்வதைத் தடுக்கும்.
- இணைக்கப்படாத கிளையை கட்டாயமாக நீக்க, git branch -D branch-name பயன்படுத்தவும்.