đ Git Reset â
Git reset āĻāĻŽāĻžāύā§āĻĄ āĻĻāĻŋā§ā§ āĻāĻĒāύāĻŋ HEAD
, staging area (index)
, āĻāĻŦāĻ working directory
-āĻā§ āύāĻŋā§āύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
reset
āĻāϰ āĻĒā§āϰāϧāĻžāύ ā§ŠāĻāĻŋ āĻŽā§āĻĄ āĻāĻā§:
--soft
--mixed
(āĻĄāĻŋāĻĢāϞā§āĻ)--hard
đ āϏāĻāĻā§āώā§āĻĒā§ āĻĒāĻžāϰā§āĻĨāĻā§āϝ: â
āϰāĻŋāϏā§āĻ āĻāĻžāĻāĻĒ | HEAD āĻĒāϰāĻŋāĻŦāϰā§āϤāύ | Index (staging) āĻĒāϰāĻŋāĻŦāϰā§āϤāύ | Working Directory āĻĒāϰāĻŋāĻŦāϰā§āϤāύ | āĻĢāĻžāĻāϞ āĻĨāĻžāĻā§ āĻāĻŋ? |
---|---|---|---|---|
--soft | â āĻšā§ | â āĻšā§ āύāĻž | â āĻšā§ āύāĻž | â āĻĢāĻžāĻāϞ āĻĨāĻžāĻā§ |
--mixed | â āĻšā§ | â āĻšā§ | â āĻšā§ āύāĻž | â āĻĢāĻžāĻāϞ āĻĨāĻžāĻā§ |
--hard | â āĻšā§ | â āĻšā§ | â āĻšā§ | â āĻĢāĻžāĻāϞ āĻšāĻžāϰāĻžā§ |
ā§§ī¸. git reset --soft
â
đ āĻāĻžāĻ: â
- āĻļā§āϧ⧠HEAD āĻā§ āĻĒā§āĻāύ⧠āύāĻŋā§ā§ āϝāĻžā§
- āĻĢāĻžāĻāϞāĻā§āϞ⧠staged āĻ āĻŦāϏā§āĻĨāĻžā§āĻ āĻĨāĻžāĻā§
đ¯ āĻāĻĻāĻžāĻšāϰāĻŖ: â
git reset --soft HEAD~1
git reset --soft HEAD~1
āĻāĻĒāύāĻŋ āĻļā§āώ āϝ⧠āĻāĻŽāĻŋāĻāĻāĻŋ āĻāϰā§āĻā§āύ, āϏā§āĻāĻž āĻŽā§āĻā§ āϝāĻžāĻŦā§ āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻžāϰ āϏāĻŦ āĻĢāĻžāĻāϞ āĻāĻāύ⧠staging area-āϤ⧠āĻĨāĻžāĻāĻŦā§āĨ¤
git status
# Output: Changes to be committed: (staged files)
git status
# Output: Changes to be committed: (staged files)
đ ī¸ āĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ? â
- āĻāĻĒāύāĻŋ āĻļā§āώ āĻāĻŽāĻŋāĻ āĻŽā§āϏā§āĻā§ āĻā§āϞ āĻāϰā§āĻā§āύ
- āĻ āĻĨāĻŦāĻž āĻāĻāĻžāϧāĻŋāĻ āĻāĻŽāĻŋāĻ āĻāĻāĻāĻŋāϤ⧠āĻāϰāϤ⧠āĻāĻžāύ
⧍ī¸. git reset --mixed
(default) â
đ āĻāĻžāĻ: â
- HEAD āĻāĻŦāĻ staging area (index) āĻĒā§āĻāύ⧠āύāĻŋā§ā§ āϝāĻžā§
- āĻĢāĻžāĻāϞāĻā§āϞ⧠working directory-āϤ⧠āϰāĻžāĻā§ (staged āύāĻž)
đ¯ āĻāĻĻāĻžāĻšāϰāĻŖ: â
git reset --mixed HEAD~1
git reset --mixed HEAD~1
āĻāĻŦāĻžāϰ git status
āĻĻāĻŋāϞ⧠āĻĻā§āĻāĻŦā§āύ āĻĢāĻžāĻāϞāĻā§āϞ⧠modified āĻšāĻŋāϏā§āĻŦā§ āĻĻā§āĻāĻžāĻā§āĻā§, āĻāĻŋāύā§āϤ⧠unstagedāĨ¤
đ ī¸ āĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ? â
- āĻĢāĻžāĻāϞā§āϰ āĻāĻžāĻ āĻ āĻŋāĻ āĻāĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻŋ āύāϤā§āύ āĻāϰ⧠stage āĻ commit āĻāϰāϤ⧠āĻāĻžāύ
ā§Š. git reset --hard
â
đ āĻāĻžāĻ: â
- āϏāĻŦ āĻāĻŋāĻā§ (HEAD, staging, working directory) āĻĒā§āĻāύ⧠āύāĻŋā§ā§ āϝāĻžā§
- āĻāĻĒāύāĻžāϰ āĻļā§āώ āĻāϰāĻž āĻāĻžāĻ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻšāĻžāϰāĻŋā§ā§ āϝāĻžā§
đ¯ āĻāĻĻāĻžāĻšāϰāĻŖ: â
git reset --hard HEAD~1
git reset --hard HEAD~1
â ī¸ āϏāĻžāĻŦāϧāĻžāύ! āĻāĻāĻŋ āĻāϰāĻžāϰ āĻĒāϰ āĻāĻā§āϰ āĻāĻžāĻ āĻĢā§āϰāϤ āĻĒāĻžāĻŦā§āύ āύāĻž (āϝāĻĻāĻŋ backup āύāĻž āĻĨāĻžāĻā§)
đ ī¸ āĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ? â
- āĻāĻĒāύāĻŋ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āϏāĻŦ āĻŦāĻžāϤāĻŋāϞ āĻāϰāϤ⧠āĻāĻžāύ
- āϝā§āĻŽāύ: āĻā§āϞā§
.env
āĻŦāĻž credentials commit āĻāϰ⧠āĻĢā§āϞā§āĻā§āύ
đ āĻāϰāĻ āĻāĻĻāĻžāĻšāϰāĻŖ: â
â āĻāĻāĻžāϧāĻŋāĻ āĻāĻŽāĻŋāĻ undo āĻāϰāϤ⧠āĻāĻžāύ? â
git reset --soft HEAD~3
git reset --soft HEAD~3
đ āĻļā§āώ ā§ŠāĻāĻŋ āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ āĻĨāĻžāĻāĻŦā§ staged āĻšāĻŋāϏā§āĻŦā§
git reset --mixed HEAD~2
git reset --mixed HEAD~2
đ āĻļā§āώ ⧍āĻāĻŋ āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ āĻĨāĻžāĻāĻŦā§ unstaged āĻšāĻŋāϏā§āĻŦā§
git reset --hard HEAD~5
git reset --hard HEAD~5
đ āĻļā§āώ ā§ĢāĻāĻŋ āĻāĻŽāĻŋāĻ āĻ āĻāĻžāĻ āĻŽā§āĻā§ āϝāĻžāĻŦā§, āϏāĻžāĻŦāϧāĻžāύ!
â Re-commit āĻāϰāĻžāϰ āĻāĻĻāĻžāĻšāϰāĻŖ (soft reset āϏāĻš) â
git reset --soft HEAD~1
git commit -m "āύāϤā§āύ āĻ āĻ āĻŋāĻ āĻāϰāĻž āĻāĻŽāĻŋāĻ āĻŽā§āϏā§āĻ"
git reset --soft HEAD~1
git commit -m "āύāϤā§āύ āĻ āĻ āĻŋāĻ āĻāϰāĻž āĻāĻŽāĻŋāĻ āĻŽā§āϏā§āĻ"
â Reset āĻāϰāĻžāϰ āĻĒāϰ āĻāĻŦāĻžāϰ Push āĻāϰāϤ⧠āĻāĻžāύ? â
git push origin main --force
git push origin main --force
â ī¸ āĻāĻŋāĻŽā§ āĻāĻžāĻ āĻāϰāϞā§
--force
āĻŦā§āϝāĻŦāĻšāĻžāϰ⧠āϏāϤāϰā§āĻ āĻĨāĻžāĻā§āύāĨ¤
â Git Reset vs Git Revert â
āĻāĻžāĻ | Reset | Revert |
---|---|---|
āĻāĻŽāĻŋāĻ āĻŽā§āĻā§ āĻĢā§āϞ⧠| â | â |
āĻāĻā§āϰ āĻŽāϤ⧠commit āϰā§āĻā§ āϝāĻžā§ | â | â |
History āĻĒāϰāĻŋāώā§āĻāĻžāϰ | â | â |
āĻāĻŋāĻŽā§ āύāĻŋāϰāĻžāĻĒāĻĻ | â | â |
â āĻāĻŋāĻā§ alias āĻŽāύ⧠āϰāĻžāĻāĻžāϰ āĻāύā§āϝ â
# soft reset (āĻļā§āϧ⧠āĻāĻŽāĻŋāĻ āĻŽā§āĻā§)
alias grs='git reset --soft HEAD~1'
# mixed reset (āĻāĻŽāĻŋāĻ + stage āĻŦāĻžāϤāĻŋāϞ)
alias grm='git reset --mixed HEAD~1'
# hard reset (āϏāĻŦ āĻŽā§āĻā§)
alias grh='git reset --hard HEAD~1'
# soft reset (āĻļā§āϧ⧠āĻāĻŽāĻŋāĻ āĻŽā§āĻā§)
alias grs='git reset --soft HEAD~1'
# mixed reset (āĻāĻŽāĻŋāĻ + stage āĻŦāĻžāϤāĻŋāϞ)
alias grm='git reset --mixed HEAD~1'
# hard reset (āϏāĻŦ āĻŽā§āĻā§)
alias grh='git reset --hard HEAD~1'
đ āĻāĻĒāϏāĻāĻšāĻžāϰ â
Git reset-āĻāϰ āĻāĻ ā§ŠāĻāĻŋ āϧāϰāύ āĻāĻĒāύāĻžāϰ version history āĻĒāϰāĻŋāĻāĻžāϞāύāĻžā§ āĻ āύā§āĻ āϏāĻšāĻžā§āĻāĨ¤ āύāĻŋāĻā§āϰ āĻŦāĻŋāώā§āĻā§āϞ⧠āĻŽāύ⧠āϰāĻžāĻā§āύ:
--soft
: āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ staged āĻĨāĻžāĻāĻŦā§--mixed
: āĻāĻŽāĻŋāĻ + stage āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ āĻĨāĻžāĻāĻŦā§ unstaged--hard
: āϏāĻŦ āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ āĻšāĻžāϰāĻŋā§ā§ āϝāĻžāĻŦā§