Git ನಲ್ಲಿ ಬಹು ಕಮಿಟ್‌ಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವುದು ಹೇಗೆ

Git ನಲ್ಲಿ ಬಹು ಕಮಿಟ್‌ಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವುದು ಹೇಗೆ
Git Command Line

Git ಕಮಿಟ್ ರಿವರ್ಶನ್‌ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು

ಪ್ರಾಜೆಕ್ಟ್‌ನ ಇತಿಹಾಸವನ್ನು ಬದಲಾಯಿಸದೆ ಹಿಂದಿನ ಬದಲಾವಣೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸಬೇಕಾದಾಗ Git ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಬಹು ಕಮಿಟ್‌ಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವುದು ಸಾಮಾನ್ಯ ಕಾರ್ಯವಾಗಿದೆ. ನಿಮ್ಮ ಹಿಂದಿನ ಕೆಲಸದ ಸಮಗ್ರತೆಯನ್ನು ಕಾಪಾಡಿಕೊಂಡು ಬದಲಾವಣೆಗಳನ್ನು ಹಿಮ್ಮೆಟ್ಟಿಸಲು ಇದು ಸುರಕ್ಷಿತ ವಿಧಾನವಾಗಿದೆ. ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ನೀವು ಇತರರೊಂದಿಗೆ ಹಂಚಿಕೊಂಡಾಗ ಈ ವಿಧಾನವು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ ಮತ್ತು ಮರುಬೇಸ್ ಇನ್ನು ಮುಂದೆ ಕಾರ್ಯಸಾಧ್ಯವಾದ ಆಯ್ಕೆಯಾಗಿಲ್ಲ.

ನೀವು ಕಮಿಟ್‌ಗಳ ಸರಣಿಯನ್ನು ಹಿಂತಿರುಗಿಸಬೇಕಾದಾಗ ಸವಾಲು ಉದ್ಭವಿಸುತ್ತದೆ-ಕಮಿಟ್ D ನಲ್ಲಿನ HEAD ನಿಂದ A ಗೆ ಹಿಂತಿರುಗುವುದು, ಪರಿಣಾಮಕಾರಿಯಾಗಿ B, C, ಮತ್ತು D ಬದ್ಧತೆಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸುವುದು. ಈ ಕಮಿಟ್‌ಗಳನ್ನು ಹಿಂತಿರುಗಿಸಲು ಸರಿಯಾದ ವಿಧಾನ ಮತ್ತು ಕ್ರಮವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ನಿರ್ಣಾಯಕವಾಗಿದೆ ಶುದ್ಧ ಮತ್ತು ಕ್ರಿಯಾತ್ಮಕ ಭಂಡಾರ.

ಆಜ್ಞೆ ವಿವರಣೆ
git reset --hard A ಪ್ರಸ್ತುತ ಶಾಖೆಯ HEAD ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕಮಿಟ್‌ಗೆ ಮರುಹೊಂದಿಸುತ್ತದೆ (ಈ ಸಂದರ್ಭದಲ್ಲಿ A), ಆ ಬದ್ಧತೆಯಿಂದ ಕಾರ್ಯನಿರ್ವಹಣೆಯ ಡೈರೆಕ್ಟರಿ ಮತ್ತು ಇಂಡೆಕ್ಸ್‌ನಲ್ಲಿನ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ.
git push --force ರಿಮೋಟ್ ರೆಪೊಸಿಟರಿಗೆ ತಳ್ಳುವಿಕೆಯನ್ನು ಒತ್ತಾಯಿಸುತ್ತದೆ, ಪ್ರಸ್ತುತ ಶಾಖೆಯ ಸ್ಥಿತಿಯೊಂದಿಗೆ ರಿಮೋಟ್‌ನಲ್ಲಿ ಬದಲಾವಣೆಗಳನ್ನು ಓವರ್‌ರೈಟ್ ಮಾಡುತ್ತದೆ. ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂದೆ ತಳ್ಳಿದರೆ ಹಾರ್ಡ್ ರೀಸೆಟ್ ನಂತರ ಇದು ಅಗತ್ಯವಾಗಿರುತ್ತದೆ.
git revert <commit> --no-commit ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಬದ್ಧತೆಯಿಂದ ಪರಿಚಯಿಸಲಾದ ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸದೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಇದು ಬಹು ಹಿಮ್ಮುಖಗಳನ್ನು ಒಂದೇ ಕಮಿಟ್ ಆಗಿ ಗುಂಪು ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.
git commit -m "Message" ಪ್ರಸ್ತುತ ಸ್ಟೇಜಿಂಗ್ ಪ್ರದೇಶದ ವಿಷಯಗಳನ್ನು ಒದಗಿಸಿದ ಸಂದೇಶದೊಂದಿಗೆ ರೆಪೊಸಿಟರಿಗೆ ಒಪ್ಪಿಸುತ್ತದೆ, ಹಿಂತಿರುಗಿಸುವ ಅಥವಾ ಮರುಹೊಂದಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅಂತಿಮಗೊಳಿಸುತ್ತದೆ.

Git ಕಮಾಂಡ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳ ವಿವರಣೆ

ಒದಗಿಸಲಾದ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು Git ರೆಪೊಸಿಟರಿಯಲ್ಲಿನ ಬದಲಾವಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ಹಿಂತಿರುಗಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಶಾಖೆಯನ್ನು ಹಿಂದಿನ ಸ್ಥಿತಿಗೆ ಮರುಹೊಂದಿಸುವ ಮೂಲಕ ಅಥವಾ ಕಮಿಟ್‌ಗಳನ್ನು ಆಯ್ದವಾಗಿ ಹಿಂತಿರುಗಿಸುವ ಮೂಲಕ. ದಿ git reset --hard A ಆದೇಶವು ನಿರ್ಣಾಯಕವಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ಶಾಖೆಯ ಹೆಡ್ ಅನ್ನು ಹಿಂದಿನ ಬದ್ಧತೆಗೆ ನೇರವಾಗಿ ಮರು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ, ಇದನ್ನು 'A' ಎಂದು ಗುರುತಿಸಲಾಗಿದೆ. ಈ ಕ್ರಿಯೆಯು ಕಮಿಟ್ ಎ ನಂತರ ಶಾಖೆಗೆ ಮಾಡಿದ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ, ಪರಿಣಾಮಕಾರಿಯಾಗಿ ರೆಪೊಸಿಟರಿ ಸ್ಥಿತಿಯನ್ನು ಕಮಿಟ್ ಎ ಯಲ್ಲಿ ಹೋಲುತ್ತದೆ. ಈ ಆಜ್ಞೆಯು ಶಕ್ತಿಯುತವಾಗಿದೆ ಆದರೆ ಎಚ್ಚರಿಕೆಯಿಂದ ಬಳಸಬೇಕು ಏಕೆಂದರೆ ಇದು ಬದಲಾವಣೆಗಳನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸುತ್ತದೆ, ನಿಮಗೆ ಕ್ಲೀನ್ ರಿವರ್ಟ್ ಅಗತ್ಯವಿರುವಾಗ ಇದು ಸೂಕ್ತವಾಗಿದೆ ತಿಳಿದಿರುವ ಉತ್ತಮ ಸ್ಥಿತಿಗೆ.

ದಿ git revert ಆಜ್ಞೆಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ --no-commit ಆಯ್ಕೆಯನ್ನು, B, C, ಮತ್ತು D ಕಮಿಟ್‌ಗಳಿಂದ ಪರಿಚಯಿಸಲಾದ ನಿರ್ದಿಷ್ಟ ಬದಲಾವಣೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸಲು ನೀವು ಬಯಸಿದಾಗ ಬಳಸಲಾಗುತ್ತದೆ, ಆದರೆ ಏನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ ಎಂಬುದರ ದಾಖಲೆಯನ್ನು ಇರಿಸಿಕೊಳ್ಳಲು ಬಯಸುತ್ತದೆ. ಈ ವಿಧಾನವು ಇತಿಹಾಸವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಬದಲಾವಣೆಗಳ ವಿಕಾಸವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯವಾದ ಹಂಚಿಕೆಯ ರೆಪೊಸಿಟರಿಗಳಿಗೆ ಇದು ಪ್ರಯೋಜನಕಾರಿಯಾಗಿದೆ. ಅಗತ್ಯ ಕಮಿಟ್‌ಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿದ ನಂತರ, ಒಂದೇ git commit ಎಲ್ಲಾ ಹಿಮ್ಮುಖಗಳನ್ನು ಒಂದು ಸ್ನ್ಯಾಪ್‌ಶಾಟ್‌ಗೆ ಗುಂಪು ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ, ಇದು ಯೋಜನೆಯ ಇತಿಹಾಸವನ್ನು ಸರಳಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಹಿಂತಿರುಗಿಸುವಿಕೆಯ ಸಂದರ್ಭವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸುಲಭವಾಗುತ್ತದೆ. ಅದರ ಉಪಯೋಗ git push --force ಶಾಖೆಯ ಇತಿಹಾಸದಲ್ಲಿ ಅಂತಹ ತೀವ್ರವಾದ ಬದಲಾವಣೆಗಳ ನಂತರ ರಿಮೋಟ್ ರೆಪೊಸಿಟರಿಯನ್ನು ನವೀಕರಿಸುವುದು ಅವಶ್ಯಕ.

Git ಶಾಖೆಯನ್ನು ನಿರ್ದಿಷ್ಟ ಬದ್ಧತೆಗೆ ಮರುಹೊಂದಿಸಲಾಗುತ್ತಿದೆ

Git ಕಮಾಂಡ್ ಲೈನ್ ಅನ್ನು ಬಳಸುವುದು

git checkout your-branch-name
git reset --hard A
git push origin your-branch-name --force

Git ನಲ್ಲಿ ಬಹು ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತಿದೆ

Git ಕಾರ್ಯಾಚರಣೆಗಳಿಗಾಗಿ ಬ್ಯಾಷ್‌ನೊಂದಿಗೆ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್

git checkout your-branch-name
git revert D --no-commit
git revert C --no-commit
git revert B --no-commit
git commit -m "Reverted commits B, C, and D"
git push origin your-branch-name

Git ಇತಿಹಾಸಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸುಧಾರಿತ ತಂತ್ರಗಳು

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

ಮತ್ತೊಂದು ಸುಧಾರಿತ ವಿಧಾನವೆಂದರೆ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಶಾಖೆಗಳು ಮತ್ತು ಇತರ ಉಲ್ಲೇಖಗಳ ಸುಳಿವುಗಳಿಗೆ ನವೀಕರಣಗಳನ್ನು ದಾಖಲಿಸುವ ಜಿಟ್‌ನಲ್ಲಿನ ಕಾರ್ಯವಿಧಾನವಾದ ರೆಫ್ಲಾಗ್ ಅನ್ನು ಬಳಸುವುದು. ಆಕ್ರಮಣಕಾರಿ ಶುಚಿಗೊಳಿಸುವಿಕೆ ಅಥವಾ ಇತಿಹಾಸದ ಕುಶಲತೆಯಲ್ಲಿನ ದೋಷಗಳಿಂದಾಗಿ ಶಾಖೆಯ ಸುಳಿವುಗಳ ಮೂಲಕ ನೇರವಾಗಿ ಪ್ರವೇಶಿಸಲಾಗದ ಯೋಜನೆಯ ಹಿಂದಿನ ಸ್ಥಿತಿಗಳನ್ನು ನೀವು ಮರುಪರಿಶೀಲಿಸುವ ಮತ್ತು ಮರುಸ್ಥಾಪಿಸಬೇಕಾದ ಮರುಪ್ರಾಪ್ತಿ ಸನ್ನಿವೇಶಗಳಿಗೆ ರೆಫ್ಲಾಗ್ ಅಮೂಲ್ಯವಾಗಿದೆ.

ಅಗತ್ಯ Git ಪ್ರಶ್ನೆಗಳಿಗೆ ಉತ್ತರಿಸಲಾಗಿದೆ

  1. ಏನು ಮಾಡುತ್ತದೆ git reset --hard ಆಜ್ಞೆ ಮಾಡು?
  2. ಇದು ಪ್ರಸ್ತುತ ಶಾಖೆಯ ಹೆಡ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಕಮಿಟ್‌ಗೆ ಮರುಹೊಂದಿಸುತ್ತದೆ, ಆ ಕಮಿಟ್‌ನಿಂದ ಸ್ಟೇಜಿಂಗ್ ಏರಿಯಾ ಮತ್ತು ವರ್ಕಿಂಗ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿನ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ.
  3. ನಾನು ವಿಲೀನ ಬದ್ಧತೆಯನ್ನು ಹಿಂತಿರುಗಿಸಬಹುದೇ?
  4. ಹೌದು, ನೀವು ನಿರ್ದಿಷ್ಟವಾಗಿ ಬಳಸಿಕೊಂಡು ವಿಲೀನ ಬದ್ಧತೆಯನ್ನು ಹಿಂತಿರುಗಿಸಬಹುದು git revert -m 1 <commit>, ಅಲ್ಲಿ "1" ವಿಲೀನವನ್ನು ಉಳಿಸಿಕೊಳ್ಳಲು ಪೋಷಕರ ಬದ್ಧತೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ.
  5. ಪಾತ್ರ ಏನು git reflog?
  6. ರೆಪೊಸಿಟರಿಯಲ್ಲಿನ ಶಾಖೆಗಳ ಸುಳಿವುಗಳು ಮತ್ತು ಇತರ ಉಲ್ಲೇಖಗಳಿಗೆ ಬದಲಾವಣೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ರೆಫ್ಲಾಗ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಕಳೆದುಹೋದ ಕಮಿಟ್‌ಗಳನ್ನು ಮರುಪಡೆಯಲು ಅಥವಾ ರೆಪೊದಲ್ಲಿ ಮಾಡಿದ ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವೇಷಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
  7. ಹೇಗೆ ಮಾಡುತ್ತದೆ git rebase ವಿಲೀನದಿಂದ ಭಿನ್ನವಾಗಿದೆಯೇ?
  8. ಶಾಖೆಯ ಮೂಲವನ್ನು ಹೊಸ ಕಮಿಟ್‌ಗೆ ಬದಲಾಯಿಸುವ ಮೂಲಕ ಪ್ರಾಜೆಕ್ಟ್ ಇತಿಹಾಸವನ್ನು ರಿಬೇಸ್ ಪುನಃ ಬರೆಯುತ್ತದೆ, ಇದು ವಿಲೀನಕ್ಕೆ ಹೋಲಿಸಿದರೆ ಇತಿಹಾಸವನ್ನು ಸ್ವಚ್ಛವಾಗಿಸುತ್ತದೆ.
  9. ಶಾಖೆಯನ್ನು ಮರುಹೊಂದಿಸಿದ ನಂತರ ಬಲವಂತವಾಗಿ ತಳ್ಳುವುದು ಸುರಕ್ಷಿತವೇ?
  10. ಬದಲಾವಣೆಗಳನ್ನು ಈಗಾಗಲೇ ತಳ್ಳಿದ್ದರೆ ಮರುಹೊಂದಿಸಿದ ನಂತರ ಬಲವಂತವಾಗಿ ತಳ್ಳುವುದು ಅವಶ್ಯಕ, ಆದರೆ ಇದು ರಿಮೋಟ್ ಬದಲಾವಣೆಗಳನ್ನು ಮೇಲ್ಬರಹ ಮಾಡಬಹುದು ಮತ್ತು ಎಚ್ಚರಿಕೆಯಿಂದ ಬಳಸಬೇಕು.

Git ಕಮಿಟ್ ರಿವರ್ಶನ್‌ಗಳ ಕುರಿತು ಅಂತಿಮ ಆಲೋಚನೆಗಳು

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