ನಿಮ್ಮ ಕೊನೆಯ N Git ಕಮಿಟ್‌ಗಳನ್ನು ಹೇಗೆ ಸಂಯೋಜಿಸುವುದು

ನಿಮ್ಮ ಕೊನೆಯ N Git ಕಮಿಟ್‌ಗಳನ್ನು ಹೇಗೆ ಸಂಯೋಜಿಸುವುದು
ನಿಮ್ಮ ಕೊನೆಯ N Git ಕಮಿಟ್‌ಗಳನ್ನು ಹೇಗೆ ಸಂಯೋಜಿಸುವುದು

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.

ಎರಡನೇ ಸ್ಕ್ರಿಪ್ಟ್ ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್ ಆಗಿದ್ದು ಅದು ಸ್ಕ್ವಾಶಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುತ್ತದೆ. ಹಲವಾರು ಕಮಿಟ್‌ಗಳನ್ನು (ಎನ್) ಒದಗಿಸಲಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ ಇದು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನಂತರ, ಅದು ಓಡುತ್ತದೆ git rebase -i HEAD~N ಮತ್ತು ಬಳಸುತ್ತದೆ sed ರೀಬೇಸ್ ಟೊಡೊ ಪಟ್ಟಿಯಲ್ಲಿನ ಮೊದಲ ಕಮಿಟ್ ಅನ್ನು ಹೊರತುಪಡಿಸಿ ಎಲ್ಲರಿಗೂ 'ಸ್ಕ್ವ್ಯಾಷ್' ಜೊತೆಗೆ 'ಪಿಕ್' ಅನ್ನು ಬದಲಿಸಲು. ಫೈಲ್ ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಸಂಪಾದಿಸದೆಯೇ ಬಹು ಕಮಿಟ್‌ಗಳನ್ನು ಸ್ಕ್ವಾಶ್ ಮಾಡಲು ಇದು ಸುಲಭಗೊಳಿಸುತ್ತದೆ. ಅಂತಿಮವಾಗಿ, ಇದು ಮರುಬೇಸ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮುಂದುವರಿಸುತ್ತದೆ git rebase --continue, ಯಾವುದೇ ಅಗತ್ಯ ಸಂಘರ್ಷ ಪರಿಹಾರಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ವಹಿಸುವುದು.

ಜಿಟ್ ರಿಬೇಸ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ಕ್ವ್ಯಾಷ್ ಬಹು ಕಮಿಟ್‌ಗಳು ಒಂದಕ್ಕೆ

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 ನಂತಹ ಆಜ್ಞೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ git status ಯಾವ ಫೈಲ್‌ಗಳು ಸಂಘರ್ಷದಲ್ಲಿದೆ ಎಂಬುದನ್ನು ನೋಡಲು ಮತ್ತು git add ಅವುಗಳನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ ಎಂದು ಗುರುತಿಸಲು. ಸಂಘರ್ಷಗಳನ್ನು ಪರಿಹರಿಸಿದ ನಂತರ, ನೀವು ಮರುಬೇಸ್ ಅನ್ನು ಮುಂದುವರಿಸುತ್ತೀರಿ git rebase --continue.

ವಿಷಯಗಳು ತಪ್ಪಾದಲ್ಲಿ ಮರುಬೇಸ್ ಅನ್ನು ಹೇಗೆ ಸ್ಥಗಿತಗೊಳಿಸುವುದು ಎಂದು ತಿಳಿಯುವುದು ಸಹ ಉಪಯುಕ್ತವಾಗಿದೆ. ಆಜ್ಞೆ git rebase --abort ಮರುಬೇಸ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿಲ್ಲಿಸುತ್ತದೆ ಮತ್ತು ಮರುಬೇಸ್ ಪ್ರಾರಂಭವಾಗುವ ಮೊದಲು ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯನ್ನು ಅದರ ಹಿಂದಿನ ಸ್ಥಿತಿಗೆ ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಮರುಬೇಸ್ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಮಾಡಿದ ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ನೀವು ಸುರಕ್ಷಿತವಾಗಿ ರದ್ದುಗೊಳಿಸಬಹುದು ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಈ ಆಜ್ಞೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಸಂಕೀರ್ಣವಾದ Git ಇತಿಹಾಸಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನಿರ್ವಹಿಸುವ ನಿಮ್ಮ ಸಾಮರ್ಥ್ಯವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ.

Git ಕಮಿಟ್ ಸ್ಕ್ವಾಶಿಂಗ್ ಬಗ್ಗೆ ಪದೇ ಪದೇ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು

  1. ಸ್ಕ್ವಾಶಿಂಗ್ ಕಮಿಟ್‌ಗಳ ಅರ್ಥವೇನು?
  2. ಸ್ಕ್ವಾಶಿಂಗ್ ಕಮಿಟ್‌ಗಳು ಎಂದರೆ ಬದ್ಧತೆಯ ಇತಿಹಾಸವನ್ನು ಸರಳಗೊಳಿಸಲು ಬಹು ಕಮಿಟ್‌ಗಳನ್ನು ಒಂದೇ ಬದ್ಧತೆಗೆ ಸಂಯೋಜಿಸುವುದು.
  3. ನಾನು ಸ್ಕ್ವ್ಯಾಷ್ ಕಮಿಟ್‌ಗಳನ್ನು ಏಕೆ ಮಾಡಬೇಕು?
  4. ಸ್ಕ್ವಾಶಿಂಗ್ ಕಮಿಟ್‌ಗಳು ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ ಇತಿಹಾಸವನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಬಹುದು ಮತ್ತು ಓದಲು ಸುಲಭವಾಗಬಹುದು, ವಿಶೇಷವಾಗಿ ಅನೇಕ ಸಣ್ಣ ಕಮಿಟ್‌ಗಳನ್ನು ಬಳಸಿದಾಗ.
  5. ಸಂವಾದಾತ್ಮಕ ಮರುಬೇಸ್ ಅನ್ನು ನಾನು ಹೇಗೆ ಪ್ರಾರಂಭಿಸುವುದು?
  6. ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ git rebase -i HEAD~N, ನೀವು ಸ್ಕ್ವ್ಯಾಷ್ ಮಾಡಲು ಬಯಸುವ ಕಮಿಟ್‌ಗಳ ಸಂಖ್ಯೆಯೊಂದಿಗೆ N ಅನ್ನು ಬದಲಾಯಿಸುವುದು.
  7. ಸಂವಾದಾತ್ಮಕ ಮರುಬೇಸ್‌ನಲ್ಲಿ 'ಪಿಕ್' ಮತ್ತು 'ಸ್ಕ್ವ್ಯಾಷ್' ಎಂದರೆ ಏನು?
  8. 'ಪಿಕ್' ಬದ್ಧತೆಯನ್ನು ಹಾಗೆಯೇ ಇರಿಸುತ್ತದೆ, ಆದರೆ 'ಸ್ಕ್ವ್ಯಾಷ್' ಅದನ್ನು ಹಿಂದಿನ ಬದ್ಧತೆಯೊಂದಿಗೆ ಸಂಯೋಜಿಸುತ್ತದೆ.
  9. ಮರುಬೇಸ್ ಸಮಯದಲ್ಲಿ ಸಂಘರ್ಷಗಳನ್ನು ನಾನು ಹೇಗೆ ಪರಿಹರಿಸುವುದು?
  10. ಬಳಸಿ git status ಸಂಘರ್ಷಗಳನ್ನು ಗುರುತಿಸಲು, ಅವುಗಳನ್ನು ಕೈಯಾರೆ ಪರಿಹರಿಸಿ, ನಂತರ ಬಳಸಿ git add ಮತ್ತು git rebase --continue.
  11. ಏನಾದರೂ ತಪ್ಪಾದಲ್ಲಿ ನಾನು ಮರುಬೇಸ್ ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಬಹುದೇ?
  12. ಹೌದು, ನೀವು ಬಳಸಬಹುದು git rebase --abort ಮರುಬೇಸ್ ಅನ್ನು ನಿಲ್ಲಿಸಲು ಮತ್ತು ಹಿಂದಿನ ಸ್ಥಿತಿಗೆ ಹಿಂತಿರುಗಲು.
  13. ಸ್ಕ್ವಾಶಿಂಗ್ ಕಮಿಟ್‌ಗಳಿಗಾಗಿ ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬಳಸುವುದರಿಂದ ಏನು ಪ್ರಯೋಜನ?
  14. ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುತ್ತದೆ, ಸಮಯವನ್ನು ಉಳಿಸುತ್ತದೆ ಮತ್ತು ಹಸ್ತಚಾಲಿತ ದೋಷಗಳ ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
  15. ರಿಬೇಸ್‌ನಲ್ಲಿ ಕಮಿಟ್‌ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ಕ್ವ್ಯಾಷ್ ಮಾಡಲು ಒಂದು ಮಾರ್ಗವಿದೆಯೇ?
  16. ಹೌದು, ರಿಬೇಸ್ ಟೊಡೊ ಪಟ್ಟಿಯನ್ನು ಮಾರ್ಪಡಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ ಬಳಸುವ ಮೂಲಕ sed, ನೀವು ಸ್ವಯಂಚಾಲಿತವಾಗಿ 'ಪಿಕ್' ಅನ್ನು 'ಸ್ಕ್ವ್ಯಾಷ್' ಗೆ ಬದಲಾಯಿಸಬಹುದು.

ಜಿಟ್ ಕಮಿಟ್ ಸ್ಕ್ವಾಶಿಂಗ್ ಅನ್ನು ಸುತ್ತಿಕೊಳ್ಳುವುದು

Git ನಲ್ಲಿ ಸ್ಕ್ವಾಶಿಂಗ್ ಕಮಿಟ್‌ಗಳು ಒಂದು ಕ್ಲೀನ್ ಮತ್ತು ಓದಬಲ್ಲ ಪ್ರಾಜೆಕ್ಟ್ ಇತಿಹಾಸವನ್ನು ನಿರ್ವಹಿಸಲು ಪ್ರಬಲ ತಂತ್ರವಾಗಿದೆ. ಸಂವಾದಾತ್ಮಕ ಮರುಬೇಸ್ ಅನ್ನು ಬಳಸುತ್ತಿರಲಿ ಅಥವಾ ಬ್ಯಾಷ್ ಸ್ಕ್ರಿಪ್ಟ್‌ನೊಂದಿಗೆ ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುತ್ತಿರಲಿ, ನೀವು ಬಹು ಕಮಿಟ್‌ಗಳನ್ನು ಒಂದೇ ಆಗಿ ಸಂಯೋಜಿಸಬಹುದು, ಲಾಗ್ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಸುಲಭವಾಗುತ್ತದೆ. ಸಂಘರ್ಷಗಳನ್ನು ಹೇಗೆ ಪರಿಹರಿಸುವುದು ಮತ್ತು ಮರುಬೇಸ್ ಅನ್ನು ಸ್ಥಗಿತಗೊಳಿಸುವುದು ಹೇಗೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ನಿಮ್ಮ Git ಪ್ರಾವೀಣ್ಯತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ, ಉದ್ಭವಿಸುವ ಯಾವುದೇ ಸಮಸ್ಯೆಗಳನ್ನು ನೀವು ನಿಭಾಯಿಸಬಹುದೆಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಈ ಆಜ್ಞೆಗಳು ಮತ್ತು ವಿಧಾನಗಳನ್ನು ಮಾಸ್ಟರಿಂಗ್ ಮಾಡುವುದು ನಿಮ್ಮ ಆವೃತ್ತಿ ನಿಯಂತ್ರಣ ಅಭ್ಯಾಸಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ.