Git இல் மாஸ்டரிங் கமிட் ஸ்குவாஷிங்:
ஒரு திட்டத்தில் பணிபுரியும் போது, உங்கள் உறுதிமொழி வரலாறு பல சிறிய கமிட்களால் இரைச்சலாகிவிடும். இந்த சிறிய பொறுப்புகள் மாற்றங்களை மதிப்பாய்வு செய்வதையும் திட்ட வரலாற்றைப் புரிந்துகொள்வதையும் கடினமாக்கும்.
Git இல், உங்களின் கடைசி N கமிட்களை ஒரே உறுதிப்பொருளாக மாற்றலாம், இது ஒரு தூய்மையான மற்றும் நிர்வகிக்கக்கூடிய வரலாற்றை உருவாக்குகிறது. இந்த வழிகாட்டி இதை அடைவதற்கான படிகள் மூலம் உங்களை அழைத்துச் செல்லும், இது உங்கள் பதிப்புக் கட்டுப்பாட்டை மிகவும் திறமையாக்கும்.
கட்டளை | விளக்கம் |
---|---|
git rebase -i HEAD~N | கடைசி N கமிட்களின் ஊடாடும் மறுதளத்தைத் தொடங்குகிறது. |
pick | ஊடாடும் மறுசீரமைப்பின் போது உள்ள உறுதிப்பாட்டை பராமரிக்கிறது. |
squash | ஊடாடும் மறுசீரமைப்பின் போது முந்தைய உறுதியுடன் ஒருங்கிணைக்கிறது. |
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo | ரீபேஸ் டோடோ பட்டியலில் முதல் உறுதியைத் தவிர மற்ற அனைவருக்கும் 'பிக்' என்பதை 'ஸ்குவாஷ்' மூலம் தானாகவே மாற்றும். |
git rebase --continue | முரண்பாடுகளைத் தீர்ப்பதற்குப் பிறகு மறுசீரமைப்பு செயல்முறையைத் தொடர்கிறது. |
git rebase --abort | மறுசீரமைப்பு செயல்முறையை நிறுத்துகிறது மற்றும் மறுசீரமைப்பு தொடங்கும் முன் மாநிலத்திற்குத் திரும்பும். |
HEAD~N | தற்போதைய HEAD க்கு முன் உறுதியான N இடங்களைக் குறிக்கிறது. |
கிட் கமிட் ஸ்குவாஷிங்கைப் புரிந்துகொள்வது
முதல் ஸ்கிரிப்ட் பயன்படுத்துகிறது git rebase -i HEAD~N கடைசி N கமிட்களின் ஊடாடும் மறுதளத்தைத் தொடங்குவதற்கு. ஊடாடும் திரையில், நீங்கள் இணைக்க விரும்பும் கமிட்களுக்கு 'பிக்' என்பதை 'ஸ்குவாஷ்' என்று மாற்றுவீர்கள். இந்த செயல்முறை பல சிறிய கமிட்களை ஒருங்கிணைக்க உதவுகிறது, இது உங்கள் உறுதி வரலாற்றை சுத்தமாகவும் நிர்வகிக்கவும் எளிதாக்குகிறது. திருத்திய பின், எடிட்டரை சேமித்து மூடவும். முரண்பாடுகள் இருந்தால், அவற்றைத் தீர்த்து, தொடரவும் git rebase --continue.
இரண்டாவது ஸ்கிரிப்ட் ஒரு பாஷ் ஸ்கிரிப்ட் ஆகும், இது ஸ்குவாஷிங் செயல்முறையை தானியங்குபடுத்துகிறது. பல கமிட்கள் (N) வழங்கப்பட்டுள்ளதா என்பதைச் சரிபார்ப்பதன் மூலம் இது தொடங்குகிறது. பின்னர், அது இயங்கும் git rebase -i HEAD~N மற்றும் பயன்படுத்துகிறது sed ரீபேஸ் டோடோ பட்டியலில் முதல் உறுதியைத் தவிர மற்ற அனைவருக்கும் 'பிக்' என்பதை 'ஸ்குவாஷ்' என்று மாற்ற வேண்டும். இது கோப்பை கைமுறையாக திருத்தாமல் பல கமிட்களை எளிதாக்குகிறது. இறுதியாக, இது மறுசீரமைப்பு செயல்முறையைத் தொடர்கிறது git rebase --continue, தேவையான முரண்பாடுகளைத் தானாகக் கையாளுதல்.
Git Rebase ஐப் பயன்படுத்தி ஸ்குவாஷ் மல்டிபிள் கமிட்கள் ஒன்று
Git கட்டளைகள்
git rebase -i HEAD~N
# Replace N with the number of commits you want to squash
# In the interactive rebase screen that appears, change 'pick' to 'squash' (or 's') for the commits you want to squash
# Save and close the editor
# Edit the commit message if needed, then save and close the editor again
# If there are conflicts, resolve them and then run
git rebase --continue
# Your last N commits are now squashed into one commit
ஷெல் ஸ்கிரிப்ட் மூலம் கமிட் ஸ்குவாஷிங்கை தானியக்கமாக்குகிறது
பேஷ் ஸ்கிரிப்ட்
#!/bin/bash
if [ -z "$1" ]
then
echo "Usage: ./squash_commits.sh <N>"
exit 1
fi
git rebase -i HEAD~$1
# Automatically replace 'pick' with 'squash' for all but the first commit
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo
git rebase --continue
மேம்பட்ட கிட் ஸ்குவாஷிங் நுட்பங்கள்
Git இல் ஸ்க்வாஷிங் கமிட்களின் மற்றொரு முக்கிய அம்சம், செயல்பாட்டின் போது ஏற்படக்கூடிய ஒன்றிணைப்பு மோதல்களைக் கையாள்வது. பல கமிட்களை இணைக்கும்போது, வெவ்வேறு கமிட்களில் இருந்து மாற்றங்கள் ஒன்றுக்கொன்று முரண்படலாம். இந்த முரண்பாடுகளை தீர்க்க, Git போன்ற கட்டளைகளை வழங்குகிறது git status எந்த கோப்புகள் முரண்படுகின்றன என்பதைப் பார்க்க மற்றும் git add அவை தீர்க்கப்பட்டதாகக் குறிக்க. முரண்பாடுகளைத் தீர்த்த பிறகு, நீங்கள் மறுசீரமைப்பைத் தொடர்கிறீர்கள் git rebase --continue.
விஷயங்கள் தவறாக நடந்தால் மறுசீரமைப்பை எவ்வாறு நிறுத்துவது என்பதை அறிவதும் பயனுள்ளதாக இருக்கும். கட்டளை git rebase --abort ரீபேஸ் செயல்முறையை நிறுத்தி, உங்கள் களஞ்சியத்தை ரீபேஸ் தொடங்கும் முன் அதன் முந்தைய நிலைக்குத் திருப்பிவிடும். ரீபேஸ் செயல்பாட்டின் போது செய்யப்பட்ட எந்த மாற்றங்களையும் நீங்கள் பாதுகாப்பாக செயல்தவிர்க்க முடியும் என்பதை இது உறுதி செய்கிறது. இந்த கட்டளைகளைப் புரிந்துகொள்வது சிக்கலான Git வரலாறுகளை திறமையாக நிர்வகிக்கும் உங்கள் திறனை கணிசமாக மேம்படுத்தும்.
Git Commit Squashing பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்
- ஸ்க்வாஷிங் கமிட்கள் என்றால் என்ன?
- ஸ்க்வாஷிங் கமிட்கள் என்பது பல கமிட்களை ஒருங்கிணைத்து ஒரு உறுதிப்பாட்டின் வரலாற்றை எளிமைப்படுத்துவதாகும்.
- நான் ஏன் ஸ்குவாஷ் கமிட் செய்ய வேண்டும்?
- ஸ்குவாஷிங் கமிட்கள் உங்கள் திட்ட வரலாற்றை சுத்தமாகவும் எளிதாகவும் படிக்க வைக்கும், குறிப்பாக பல சிறிய கமிட்கள் பயன்படுத்தப்படும் போது.
- ஊடாடும் மறுதளத்தை நான் எவ்வாறு தொடங்குவது?
- கட்டளையைப் பயன்படுத்தவும் git rebase -i HEAD~N, நீங்கள் ஸ்குவாஷ் செய்ய விரும்பும் கமிட்களின் எண்ணிக்கையுடன் Nக்கு பதிலாக.
- இன்டராக்டிவ் ரீபேஸில் 'பிக்' மற்றும் 'ஸ்குவாஷ்' என்றால் என்ன?
- 'பிக்' ஒரு உறுதியை அப்படியே வைத்திருக்கும், அதே சமயம் 'ஸ்குவாஷ்' அதை முந்தைய உறுதியுடன் இணைக்கிறது.
- மறுசீரமைப்பின் போது முரண்பாடுகளை எவ்வாறு தீர்ப்பது?
- பயன்படுத்தவும் git status முரண்பாடுகளை அடையாளம் காண, அவற்றை கைமுறையாக தீர்க்கவும், பின்னர் பயன்படுத்தவும் git add மற்றும் git rebase --continue.
- ஏதேனும் தவறு நடந்தால் நான் மறுசீரமைப்பை நிறுத்தலாமா?
- ஆம், நீங்கள் பயன்படுத்தலாம் git rebase --abort மறுசீரமைப்பை நிறுத்திவிட்டு முந்தைய நிலைக்குத் திரும்ப வேண்டும்.
- ஸ்க்வாஷிங் கமிட்களுக்கு பாஷ் ஸ்கிரிப்டைப் பயன்படுத்துவதால் என்ன பயன்?
- ஒரு பாஷ் ஸ்கிரிப்ட் செயல்முறையை தானியங்குபடுத்துகிறது, நேரத்தை மிச்சப்படுத்துகிறது மற்றும் கையேடு பிழைகளின் அபாயத்தைக் குறைக்கிறது.
- ரீபேஸில் கமிட்களை தானாகவே ஸ்குவாஷ் செய்ய வழி உள்ளதா?
- ஆம், ஸ்கிரிப்டைப் பயன்படுத்தி ரீபேஸ் டோடோ பட்டியலை மாற்றலாம் sed, நீங்கள் தானாகவே 'பிக்' என்பதை 'ஸ்குவாஷ்' ஆக மாற்றலாம்.
கிட் கமிட் ஸ்குவாஷிங்
Git இல் Squashing கமிட்கள் ஒரு சுத்தமான மற்றும் படிக்கக்கூடிய திட்ட வரலாற்றைப் பராமரிப்பதற்கான ஒரு சக்திவாய்ந்த நுட்பமாகும். இன்டராக்டிவ் ரீபேஸ் அல்லது பாஷ் ஸ்கிரிப்ட் மூலம் ஆட்டோமேட்டிங்கைப் பயன்படுத்தினாலும், நீங்கள் பல கமிட்களை ஒன்றாக இணைத்து, பதிவை எளிதாக நிர்வகிக்கலாம். மோதல்களைத் தீர்ப்பது மற்றும் மறுசீரமைப்பை எவ்வாறு நிறுத்துவது என்பதைப் புரிந்துகொள்வது உங்கள் Git நிபுணத்துவத்தை அதிகரிக்கிறது, எழும் எந்தவொரு சிக்கலையும் நீங்கள் கையாள முடியும் என்பதை உறுதிப்படுத்துகிறது. இந்த கட்டளைகள் மற்றும் முறைகளில் தேர்ச்சி பெறுவது உங்கள் பதிப்பு கட்டுப்பாட்டு நடைமுறைகளை கணிசமாக மேம்படுத்தும்.