đ 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~1git 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~1git reset --mixed HEAD~1āĻāĻŦāĻžāϰ git status āĻĻāĻŋāϞ⧠āĻĻā§āĻāĻŦā§āύ āĻĢāĻžāĻāϞāĻā§āϞ⧠modified āĻšāĻŋāϏā§āĻŦā§ āĻĻā§āĻāĻžāĻā§āĻā§, āĻāĻŋāύā§āϤ⧠unstagedāĨ¤
đ ī¸ āĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ? â
- āĻĢāĻžāĻāϞā§āϰ āĻāĻžāĻ āĻ āĻŋāĻ āĻāĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻŋ āύāϤā§āύ āĻāϰ⧠stage āĻ commit āĻāϰāϤ⧠āĻāĻžāύ
ā§Š. git reset --hard â
đ āĻāĻžāĻ: â
- āϏāĻŦ āĻāĻŋāĻā§ (HEAD, staging, working directory) āĻĒā§āĻāύ⧠āύāĻŋā§ā§ āϝāĻžā§
- āĻāĻĒāύāĻžāϰ āĻļā§āώ āĻāϰāĻž āĻāĻžāĻ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻšāĻžāϰāĻŋā§ā§ āϝāĻžā§
đ¯ āĻāĻĻāĻžāĻšāϰāĻŖ: â
git reset --hard HEAD~1git reset --hard HEAD~1â ī¸ āϏāĻžāĻŦāϧāĻžāύ! āĻāĻāĻŋ āĻāϰāĻžāϰ āĻĒāϰ āĻāĻā§āϰ āĻāĻžāĻ āĻĢā§āϰāϤ āĻĒāĻžāĻŦā§āύ āύāĻž (āϝāĻĻāĻŋ backup āύāĻž āĻĨāĻžāĻā§)
đ ī¸ āĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ? â
- āĻāĻĒāύāĻŋ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āϏāĻŦ āĻŦāĻžāϤāĻŋāϞ āĻāϰāϤ⧠āĻāĻžāύ
- āϝā§āĻŽāύ: āĻā§āϞā§
.envāĻŦāĻž credentials commit āĻāϰ⧠āĻĢā§āϞā§āĻā§āύ
đ āĻāϰāĻ āĻāĻĻāĻžāĻšāϰāĻŖ: â
â āĻāĻāĻžāϧāĻŋāĻ āĻāĻŽāĻŋāĻ undo āĻāϰāϤ⧠āĻāĻžāύ? â
git reset --soft HEAD~3git reset --soft HEAD~3đ āĻļā§āώ ā§ŠāĻāĻŋ āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ āĻĨāĻžāĻāĻŦā§ staged āĻšāĻŋāϏā§āĻŦā§
git reset --mixed HEAD~2git reset --mixed HEAD~2đ āĻļā§āώ ⧍āĻāĻŋ āĻāĻŽāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ āĻĨāĻžāĻāĻŦā§ unstaged āĻšāĻŋāϏā§āĻŦā§
git reset --hard HEAD~5git 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 --forcegit 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: āϏāĻŦ āĻŦāĻžāϤāĻŋāϞ, āĻāĻžāĻ āĻšāĻžāϰāĻŋā§ā§ āϝāĻžāĻŦā§