đ Undo Last Commit (Git āĻ āĻļā§āώ āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ āĻāϰāĻž) â
đ āĻāĻĻā§āĻĻā§āĻļā§āϝ: â
āĻļā§āώ āϝā§āĻ āĻāĻŽāĻŋāĻāĻāĻž āĻāϰā§āĻāĻŋ, āϏā§āĻāĻž āĻšā§āϤā§:
- āĻā§āϞ commit message,
- āĻā§āϞ āĻĢāĻžāĻāϞ,
- āύāĻž āĻāĻžāĻā§āĻž āĻā§āύ⧠āĻā§āĻĄ,
- staging āĻŦāĻž working directory āĻ āĻŋāĻ āύāĻž āĻĨāĻžāĻāĻž āĻ āĻŦāϏā§āĻĨāĻžā§ āĻāϰāĻž āĻšā§ā§āĻā§āĨ¤
āĻāĻ āĻā§āϞāĻāĻž āĻļā§āϧāϰāĻžāϤ⧠āĻāĻžāĻ, āϤāĻžāĻ āĻļā§āώ āĻāĻŽāĻŋāĻāĻāĻŋ undo āĻāϰāϤ⧠āĻāĻžāĻāĨ¤
đ§ āϤāĻŋāύāĻāĻžāĻŦā§ āĻļā§āώ āĻāĻŽāĻŋāĻ Undo āĻāϰāĻž āϝāĻžā§: â
â ā§§. āĻļā§āϧ⧠āĻļā§āώ āĻāĻŽāĻŋāĻ āĻŽā§āĻā§ āĻĢā§āϞā§, āĻāĻŋāύā§āϤ⧠āĻāĻžāĻ (āĻĢāĻžāĻāϞ āĻā§āĻā§āĻ) āϰā§āĻā§ āĻĻāĻžāĻ â
āĻ āϰā§āĻĨāĻžā§ āĻāĻĒāύāĻŋ āϝā§āĻ āĻāĻŽāĻŋāĻ āĻāϰā§āĻā§āύ, āϏā§āĻāĻŋ āĻŽā§āĻā§ āϝāĻžāĻŦā§, āĻāĻŋāύā§āϤ⧠āĻĢāĻžāĻāϞāĻā§āϞ⧠unstaged āĻ āĻŦāϏā§āĻĨāĻžā§ āĻĨāĻžāĻāĻŦā§āĨ¤
git reset --soft HEAD~1
git reset --soft HEAD~1
đ¯ āĻāĻĻāĻžāĻšāϰāĻŖ: â
git commit -m "Oops, āĻā§āϞ āĻāϰāϞāĻžāĻŽ"
git reset --soft HEAD~1
git commit -m "Oops, āĻā§āϞ āĻāϰāϞāĻžāĻŽ"
git reset --soft HEAD~1
āĻāĻāύ āĻāĻĒāύāĻŋ git status
āĻāĻžāϞāĻžāϞ⧠āĻĻā§āĻāĻŦā§āύ āĻĢāĻžāĻāϞāĻā§āϞ⧠staging āĻ āĻāĻā§āĨ¤ āĻāĻĒāύāĻŋ āĻāĻžāĻāϞ⧠āĻāĻŦāĻžāϰ āĻ āĻŋāĻ āĻāϰ⧠āĻāĻŽāĻŋāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
â ⧍. āĻļā§āώ āĻāĻŽāĻŋāĻ āĻŽā§āĻā§ āĻĢā§āϞ⧠āĻāĻŦāĻ āĻĢāĻžāĻāϞāĻā§āϞā§āĻ unstaged āĻāϰ⧠â
āĻāĻāĻž āĻāϰāϞ⧠āĻļā§āώ āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻĢāĻžāĻāϞāĻā§āϞ⧠āϏā§āĻā§āĻāĻŋāĻ (staging) āĻĨā§āĻā§ āϏāϰāĻŋā§ā§ working directory-āϤ⧠āϝāĻžāĻŦā§āĨ¤
git reset --mixed HEAD~1
git reset --mixed HEAD~1
NB: āĻāĻāĻž āϏāĻŦāĻā§ā§ā§ āĻāĻŽāύāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§āĨ¤
đ¯ āĻāĻĻāĻžāĻšāϰāĻŖ: â
git reset --mixed HEAD~1
git reset --mixed HEAD~1
āĻāĻāύ
git status
āĻĻā§āĻāĻžāĻŦā§: modified files āĻāĻā§ āĻāĻŋāύā§āϤ⧠āϤāĻžāϰāĻž staged āύāĻžāĨ¤
â ā§Š. āϏāĻŦāĻāĻŋāĻā§ āĻŦāĻžāϤāĻŋāϞ āĻāϰ⧠āĻĢāĻžāĻāϞāĻ āĻāĻā§āϰ āĻ āĻŦāϏā§āĻĨāĻžā§ āύāĻŋā§ā§ āϝāĻžāĻ (hard reset) â
āϏāϤāϰā§āĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ! āĻāĻžāϰāĻŖ āĻāĻĒāύāĻžāϰ āĻļā§āώ āĻāĻŽāĻŋāĻā§āϰ āϏāĻŦ āĻāĻžāĻ āĻāϞ⧠āϝāĻžāĻŦā§āĨ¤
git reset --hard HEAD~1
git reset --hard HEAD~1
đ¯ āĻāĻĻāĻžāĻšāϰāĻŖ: â
git reset --hard HEAD~1
git reset --hard HEAD~1
āĻāĻāĻž āĻāϰāϞ⧠āĻĢāĻžāĻāϞā§āϰ āĻā§āĻā§āĻāĻāĻžāĻ āĻŦāĻžāϤāĻŋāϞ āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤ āĻ āϰā§āĻĨāĻžā§ āĻāĻĒāύāĻŋ āϝā§āĻāĻž āĻāĻŽāĻŋāĻ āĻāϰā§āĻāĻŋāϞā§āύ, āϏā§āĻāĻŋ āĻ āϤāĻžāϰ āϏāĻŦ āĻĢāĻžāĻāϞā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻā§āĻ āĻāϞ⧠āϝāĻžāĻŦā§āĨ¤
đ§Ē āĻāĻāύ āĻā§āύāĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ? â
āĻāĻĻā§āĻĻā§āĻļā§āϝ | āĻāĻŽāĻžāύā§āĻĄ |
---|---|
āĻļā§āϧ⧠āĻāĻŽāĻŋāĻ āĻŽā§āĻāϤ⧠āĻāĻžāύ, āĻāĻžāĻ āϰāĻžāĻāϤ⧠āĻāĻžāύ | git reset --soft HEAD~1 |
āĻāĻŽāĻŋāĻ āĻŽā§āĻāϤ⧠āĻāĻžāύ, āĻāĻžāĻ unstaged āϰāĻžāĻāϤ⧠āĻāĻžāύ | git reset --mixed HEAD~1 |
āĻāĻŽāĻŋāĻ + āĻāĻžāĻ āĻĻā§āĻāĻāĻžāĻ āĻŽā§āĻāϤ⧠āĻāĻžāύ | git reset --hard HEAD~1 |
â Reword (āĻļā§āϧ⧠āĻāĻŽāĻŋāĻ āĻŽā§āϏā§āĻ āĻŦāĻĻāϞāĻžāύā§) â
git commit --amend
git commit --amend
đ¯ āĻāĻĻāĻžāĻšāϰāĻŖ: â
git commit -m "Bug fixed"
# āĻā§āϞ āĻŽā§āϏā§āĻ! āĻāĻāύ āĻ āĻŋāĻ āĻāϰāĻŦā§
git commit --amend
git commit -m "Bug fixed"
# āĻā§āϞ āĻŽā§āϏā§āĻ! āĻāĻāύ āĻ āĻŋāĻ āĻāϰāĻŦā§
git commit --amend
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāύā§āĻāĻžāϰāĻ ā§āϝāĻžāĻāĻāĻŋāĻ āĻāĻĄāĻŋāĻāϰ āĻā§āϞāĻŦā§, āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻŽā§āϏā§āĻāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύāĨ¤
â āĻļā§āώ āĻāĻŽāĻŋāĻ undo āĻāϰ⧠āĻāĻŦāĻžāϰ āύāϤā§āύ āĻāĻŽāĻŋāĻ â
git reset --soft HEAD~1
git add .
git commit -m "āϏāĻ āĻŋāĻ āĻāĻŽāĻŋāĻ āĻŽā§āϏā§āĻ āĻĻāĻŋā§ā§ āĻāĻŦāĻžāϰ āĻāϰāϞāĻžāĻŽ"
git reset --soft HEAD~1
git add .
git commit -m "āϏāĻ āĻŋāĻ āĻāĻŽāĻŋāĻ āĻŽā§āϏā§āĻ āĻĻāĻŋā§ā§ āĻāĻŦāĻžāϰ āĻāϰāϞāĻžāĻŽ"
â āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āϰāĻŋāĻŽā§āĻā§ push āĻāϰ⧠āĻĢā§āϞā§āύ? â
āϤāĻžāĻšāϞ⧠--force
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āĻŋāĻ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
git reset --soft HEAD~1
git commit -m "āϏāĻāĻļā§āϧāĻŋāϤ āĻāĻŽāĻŋāĻ"
git push --force
git reset --soft HEAD~1
git commit -m "āϏāĻāĻļā§āϧāĻŋāϤ āĻāĻŽāĻŋāĻ"
git push --force
â ī¸ āϏāϤāϰā§āĻāϤāĻž:
āĻāĻŋāĻŽā§ āĻāĻžāĻ āĻāϰāϞā§
--force
āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻā§ āĻāĻŋāĻŽāĻŽā§āĻāĻĻā§āϰ āϏāĻā§āĻā§ āĻāϞā§āĻāύāĻž āĻāϰ⧠āĻāϰā§āύāĨ¤
â āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ āĻāϰ⧠stash āĻ āϰāĻžāĻāϤ⧠āĻāĻžāύ? â
git reset --mixed HEAD~1
git stash
git reset --mixed HEAD~1
git stash
āĻāĻāύ āϏāĻŦ āĻāĻžāĻ stash āĻšā§ā§ āĻā§āϞ, āĻĒāϰā§
git stash apply
āĻĻāĻŋā§ā§ āĻĢā§āϰāϤ āĻāύāϤ⧠āĻĒāĻžāϰāĻŦā§āύāĨ¤
đ§ HEAD~1 āĻŽāĻžāύ⧠āĻā§? â
HEAD
āĻšāϞ⧠āĻŦāϰā§āϤāĻŽāĻžāύ āĻāĻŽāĻŋāĻāĨ¤ HEAD~1
āĻŽāĻžāύ⧠āĻāĻ āϧāĻžāĻĒ āĻāĻā§āϰ āĻāĻŽāĻŋāĻāĨ¤
â āĻāϰā§āĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ â āĻāĻāϏāĻžāĻĨ⧠⧍āĻāĻž āĻāĻŽāĻŋāĻ undo â
git reset --soft HEAD~2
git reset --soft HEAD~2
āĻļā§āώ ⧍āĻāĻŋ āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ āĻšāĻŦā§, āĻāĻŋāύā§āϤ⧠āĻāĻžāĻ āĻĨāĻžāĻāĻŦā§āĨ¤
â āĻļā§āώ āĻāĻŽāĻŋāĻā§ āĻā§āϞ āĻāϰ⧠sensitive āϤāĻĨā§āϝ (āĻĒāĻžāϏāĻā§āĻžāϰā§āĻĄ) āĻāϞ⧠āĻā§āĻā§? â
git reset --hard HEAD~1
git push origin main --force
git reset --hard HEAD~1
git push origin main --force
āĻāϰ āĻĒāϰ
.gitignore
āĻāĻĒāĻĄā§āĻ āĻāϰ⧠āĻāĻŦāĻ credentials rotate āĻāϰ⧠āĻĢā§āϞā§āύāĨ¤
đ āĻāĻĒāϏāĻāĻšāĻžāϰ â
Git-āĻ āĻā§āϞ āĻāĻŽāĻŋāĻ undo āĻāϰāĻž āĻā§āĻŦāĻ āĻĻāϰāĻāĻžāϰāĻŋ āĻ āĻĒā§āϰāĻžā§ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύā§āϰ āĻĒā§āϰā§ā§āĻāύāĨ¤ āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāĻŋāĻā§āϰ āĻāĻŋāύāĻŋāϏāĻā§āϞ⧠āĻŽāύ⧠āϰāĻžāĻā§āύ, āϤāĻžāĻšāϞ⧠āĻĻā§āϰā§āϤ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύâ
āĻāĻŋ āĻāϰāϤ⧠āĻāĻžāύ | āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ |
---|---|
āĻļā§āϧ⧠āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ āϰāĻžāĻāĻŦā§āύ | --soft |
āĻāĻŽāĻŋāĻ + āϏā§āĻā§āĻ āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ āϰāĻžāĻāĻŦā§āύ | --mixed |
āĻāĻŽāĻŋāĻ + āĻĢāĻžāĻāϞ āĻā§āĻā§āĻ āĻŦāĻžāĻĻ āĻĻāĻŋāϤ⧠āĻāĻžāύ | --hard |
āĻļā§āϧ⧠āĻŽā§āϏā§āĻ āĻŦāĻĻāϞāĻžāϤ⧠āĻāĻžāύ | --amend |