Skip to content

🔁 Git Reset ​

Git reset āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋā§Ÿā§‡ āφāĻĒāύāĻŋ HEAD, staging area (index), āĻāĻŦāĻ‚ working directory-āϕ⧇ āύāĻŋ⧟āĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

reset āĻāϰ āĻĒā§āϰāϧāĻžāύ ā§ŠāϟāĻŋ āĻŽā§‹āĻĄ āφāϛ⧇:

  1. --soft
  2. --mixed (āĻĄāĻŋāĻĢāĻ˛ā§āϟ)
  3. --hard

🔍 āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ: ​

āϰāĻŋāϏ⧇āϟ āϟāĻžāχāĻĒHEAD āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύIndex (staging) āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύWorking Directory āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻĢāĻžāχāϞ āĻĨāĻžāϕ⧇ āĻ•āĻŋ?
--soft✅ āĻšā§ŸâŒ āĻšā§Ÿ āύāĻžâŒ āĻšā§Ÿ āύāĻžâœ… āĻĢāĻžāχāϞ āĻĨāĻžāϕ⧇
--mixed✅ āĻšā§Ÿâœ… āĻšā§ŸâŒ āĻšā§Ÿ āύāĻžâœ… āĻĢāĻžāχāϞ āĻĨāĻžāϕ⧇
--hard✅ āĻšā§Ÿâœ… āĻšā§Ÿâœ… āĻšā§ŸâŒ āĻĢāĻžāχāϞ āĻšāĻžāϰāĻžā§Ÿ

ā§§ī¸. git reset --soft ​

📌 āĻ•āĻžāϜ: ​

  • āĻļ⧁āϧ⧁ HEAD āϕ⧇ āĻĒ⧇āĻ›āύ⧇ āύāĻŋā§Ÿā§‡ āϝāĻžā§Ÿ
  • āĻĢāĻžāχāϞāϗ⧁āϞ⧋ staged āĻ…āĻŦāĻ¸ā§āĻĨāĻžā§Ÿāχ āĻĨāĻžāϕ⧇

đŸŽ¯ āωāĻĻāĻžāĻšāϰāĻŖ: ​

bash
git reset --soft HEAD~1
git reset --soft HEAD~1

āφāĻĒāύāĻŋ āĻļ⧇āώ āϝ⧇ āĻ•āĻŽāĻŋāϟāϟāĻŋ āĻ•āϰ⧇āϛ⧇āύ, āϏ⧇āϟāĻž āĻŽā§āϛ⧇ āϝāĻžāĻŦ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻžāϰ āϏāĻŦ āĻĢāĻžāχāϞ āĻāĻ–āύ⧋ staging area-āϤ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

bash
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 āύāĻž)

đŸŽ¯ āωāĻĻāĻžāĻšāϰāĻŖ: ​

bash
git reset --mixed HEAD~1
git reset --mixed HEAD~1

āĻāĻŦāĻžāϰ git status āĻĻāĻŋāϞ⧇ āĻĻ⧇āĻ–āĻŦ⧇āύ āĻĢāĻžāχāϞāϗ⧁āϞ⧋ modified āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĻ⧇āĻ–āĻžāĻšā§āϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ unstagedāĨ¤

đŸ› ī¸ āĻ•āĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ? ​

  • āĻĢāĻžāχāϞ⧇āϰ āĻ•āĻžāϜ āĻ āĻŋāĻ• āφāϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻŋ āύāϤ⧁āύ āĻ•āϰ⧇ stage āĻ“ commit āĻ•āϰāϤ⧇ āϚāĻžāύ

ā§Š. git reset --hard ​

📌 āĻ•āĻžāϜ: ​

  • āϏāĻŦ āĻ•āĻŋāϛ⧁ (HEAD, staging, working directory) āĻĒ⧇āĻ›āύ⧇ āύāĻŋā§Ÿā§‡ āϝāĻžā§Ÿ
  • āφāĻĒāύāĻžāϰ āĻļ⧇āώ āĻ•āϰāĻž āĻ•āĻžāϜ āĻĒ⧁āϰ⧋āĻĒ⧁āϰāĻŋ āĻšāĻžāϰāĻŋā§Ÿā§‡ āϝāĻžā§Ÿ

đŸŽ¯ āωāĻĻāĻžāĻšāϰāĻŖ: ​

bash
git reset --hard HEAD~1
git reset --hard HEAD~1

âš ī¸ āϏāĻžāĻŦāϧāĻžāύ! āĻāϟāĻŋ āĻ•āϰāĻžāϰ āĻĒāϰ āφāϗ⧇āϰ āĻ•āĻžāϜ āĻĢ⧇āϰāϤ āĻĒāĻžāĻŦ⧇āύ āύāĻž (āϝāĻĻāĻŋ backup āύāĻž āĻĨāĻžāϕ⧇)

đŸ› ī¸ āĻ•āĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ? ​

  • āφāĻĒāύāĻŋ āĻĒ⧁āϰ⧋āĻĒ⧁āϰāĻŋ āϏāĻŦ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāϤ⧇ āϚāĻžāύ
  • āϝ⧇āĻŽāύ: āϭ⧁āϞ⧇ .env āĻŦāĻž credentials commit āĻ•āϰ⧇ āĻĢ⧇āϞ⧇āϛ⧇āύ

📚 āφāϰāĻ“ āωāĻĻāĻžāĻšāϰāĻŖ: ​

✅ āĻāĻ•āĻžāϧāĻŋāĻ• āĻ•āĻŽāĻŋāϟ undo āĻ•āϰāϤ⧇ āϚāĻžāύ? ​

bash
git reset --soft HEAD~3
git reset --soft HEAD~3

👉 āĻļ⧇āώ ā§ŠāϟāĻŋ āĻ•āĻŽāĻŋāϟ āĻŦāĻžāϤāĻŋāϞ, āĻ•āĻžāϜ āĻĨāĻžāĻ•āĻŦ⧇ staged āĻšāĻŋāϏ⧇āĻŦ⧇

bash
git reset --mixed HEAD~2
git reset --mixed HEAD~2

👉 āĻļ⧇āώ ⧍āϟāĻŋ āĻ•āĻŽāĻŋāϟ āĻŦāĻžāϤāĻŋāϞ, āĻ•āĻžāϜ āĻĨāĻžāĻ•āĻŦ⧇ unstaged āĻšāĻŋāϏ⧇āĻŦ⧇

bash
git reset --hard HEAD~5
git reset --hard HEAD~5

👉 āĻļ⧇āώ ā§ĢāϟāĻŋ āĻ•āĻŽāĻŋāϟ āĻ“ āĻ•āĻžāϜ āĻŽā§āϛ⧇ āϝāĻžāĻŦ⧇, āϏāĻžāĻŦāϧāĻžāύ!

✅ Re-commit āĻ•āϰāĻžāϰ āωāĻĻāĻžāĻšāϰāĻŖ (soft reset āϏāĻš) ​

bash
git reset --soft HEAD~1
git commit -m "āύāϤ⧁āύ āĻ“ āĻ āĻŋāĻ• āĻ•āϰāĻž āĻ•āĻŽāĻŋāϟ āĻŽā§‡āϏ⧇āϜ"
git reset --soft HEAD~1
git commit -m "āύāϤ⧁āύ āĻ“ āĻ āĻŋāĻ• āĻ•āϰāĻž āĻ•āĻŽāĻŋāϟ āĻŽā§‡āϏ⧇āϜ"

✅ Reset āĻ•āϰāĻžāϰ āĻĒāϰ āφāĻŦāĻžāϰ Push āĻ•āϰāϤ⧇ āϚāĻžāύ? ​

bash
git push origin main --force
git push origin main --force

âš ī¸ āϟāĻŋāĻŽā§‡ āĻ•āĻžāϜ āĻ•āϰāϞ⧇ --force āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇ āϏāϤāĻ°ā§āĻ• āĻĨāĻžāϕ⧁āύāĨ¤

✅ Git Reset vs Git Revert ​

āĻ•āĻžāϜResetRevert
āĻ•āĻŽāĻŋāϟ āĻŽā§āϛ⧇ āĻĢ⧇āĻ˛ā§‡âœ…âŒ
āφāϗ⧇āϰ āĻŽāϤ⧋ commit āϰ⧇āϖ⧇ āϝāĻžā§ŸâŒâœ…
History āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāĻ°âœ…âŒ
āϟāĻŋāĻŽā§‡ āύāĻŋāϰāĻžāĻĒāĻĻ❌✅

✅ āĻ•āĻŋāϛ⧁ alias āĻŽāύ⧇ āϰāĻžāĻ–āĻžāϰ āϜāĻ¨ā§āϝ ​

bash
# 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: āϏāĻŦ āĻŦāĻžāϤāĻŋāϞ, āĻ•āĻžāϜ āĻšāĻžāϰāĻŋā§Ÿā§‡ āϝāĻžāĻŦ⧇

Released under the MIT License.