Skip to content

🚨 git push --force āύāĻŋā§Ÿā§‡ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ ​

git push --force (āĻŦāĻž āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ git push -f) Git-āĻāϰ āĻāĻ•āϟāĻŋ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ, āϝāĻž āϞ⧋āĻ•āĻžāϞ āĻŦā§āϰāĻžāĻžā§āĻšā§‡āϰ āχāϤāĻŋāĻšāĻžāϏāϕ⧇ āĻœā§‹āϰ āĻ•āϰ⧇ āϰāĻŋāĻŽā§‹āϟ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ āĻĒāĻžāĻ āĻžā§Ÿâ€”even āϝāĻĻāĻŋ āϰāĻŋāĻŽā§‹āĻŸā§‡ āĻāĻŽāύ āĻ•āĻŽāĻŋāϟ āĻĨāĻžāϕ⧇ āϝāĻž āφāĻĒāύāĻžāϰ āϞ⧋āĻ•āĻžāϞ⧇ āύ⧇āχāĨ¤

āĻāϟāĻž āϖ⧁āĻŦāχ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ — āφāĻŦāĻžāϰ āĻŦāĻŋāĻĒāĻœā§āϜāύāĻ•āĻ“āĨ¤ āϭ⧁āϞāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ āφāĻĒāύāĻžāϰ āϟāĻŋāĻŽāĻŽā§‡āϟāĻĻ⧇āϰ āĻ•āĻžāϜ āĻŽā§āϛ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

🔍 āϏāĻžāϧāĻžāϰāĻŖ git push vs git push --force ​

git pushgit push --force
āϰāĻŋāĻŽā§‹āϟ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ āύāϤ⧁āύ āĻ•āĻŽāĻŋāϟ āĻĒāĻžāĻ āĻžā§Ÿ āϝāĻĻāĻŋ āφāϗ⧇āϰ āχāϤāĻŋāĻšāĻžāϏ āĻŽāĻŋāϞ⧇āϰāĻŋāĻŽā§‹āϟ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ āĻœā§‹āϰ āĻ•āϰ⧇ āϞ⧋āĻ•āĻžāϞ⧇āϰ āχāϤāĻŋāĻšāĻžāϏ āĻŦāϏāĻžā§Ÿ
āύāĻŋāϰāĻžāĻĒāĻĻāĻŦāĻŋāĻĒāĻœā§āϜāύāĻ• (āϏāϤāĻ°ā§āĻ•āϤāĻžāϰ āϏāĻžāĻĨ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ)

📌 āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϏāĻžāϧāĻžāϰāĻŖ āϰ⧂āĻĒ â€‹

bash
git push --force origin <branch-name>
git push --force origin <branch-name>

āĻ…āĻĨāĻŦāĻž

bash
git push -f origin <branch-name>
git push -f origin <branch-name>

🔧 āĻ•āĻ–āύ git push --force āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšā§Ÿ? ​

✅ ā§§. āĻ•āĻŽāĻŋāϟ amend āĻ•āϰāĻžāϰ āĻĒāϰ ​

bash
git commit --amend -m "Fix commit message"
git push --force
git commit --amend -m "Fix commit message"
git push --force

âžĄī¸ āφāϗ⧇āϰ āĻ•āĻŽāĻŋāϟ āĻŦāĻĻāϞ⧇ āϗ⧇āϞ⧇, Git āϏāĻžāϧāĻžāϰāĻŖ push āĻ•āϰāϤ⧇ āĻĻā§‡ā§Ÿ āύāĻžāĨ¤ āϤāĻ–āύ --force āĻĻāϰāĻ•āĻžāϰāĨ¤

✅ ⧍. Rebase āĻ•āϰāĻžāϰ āĻĒāϰ ​

bash
git pull --rebase origin main
git push --force
git pull --rebase origin main
git push --force

âžĄī¸ Rebase āχāϤāĻŋāĻšāĻžāϏ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āĨ¤ āϤāĻžāχ force push āĻĻāϰāĻ•āĻžāϰ āĻĒā§œā§‡āĨ¤

✅ ā§Š. āϭ⧁āϞ āĻ•āϰ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĢāĻžāχāϞ āĻŦāĻž āϭ⧁āϞ commit āĻ•āϰāϞ⧇ ​

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

âžĄī¸ āĻāĻ• āϧāĻžāĻĒ āĻĒ⧇āĻ›āύ⧇ āĻ—āĻŋā§Ÿā§‡ āφāϗ⧇āϰ āĻ•āĻŽāĻŋāϟ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰ⧇ āĻœā§‹āϰ āĻ•āϰ⧇ āφāĻĒāĻĄā§‡āϟ āĻĒāĻžāĻ āĻžāύ⧋āĨ¤

💡 āωāĻĻāĻžāĻšāϰāĻŖāϏāĻŽā§‚āĻš ​

đŸ§Ē āωāĻĻāĻžāĻšāϰāĻŖ ā§§: āϭ⧁āϞ commit āĻŽā§āϛ⧇ āĻĻāĻŋā§Ÿā§‡ push āĻ•āϰāĻž ​

bash
git reset --hard HEAD~2
git push --force
git reset --hard HEAD~2
git push --force

âžĄī¸ āĻļ⧇āώ ⧍āϟāĻŋ āĻ•āĻŽāĻŋāϟ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰ⧇ āϰāĻŋāĻŽā§‹āĻŸā§‡āĻ“ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻŦ⧇āĨ¤

đŸ§Ē āωāĻĻāĻžāĻšāϰāĻŖ ⧍: history āϏāĻžāϜāĻŋā§Ÿā§‡ āύ⧇āĻ“ā§ŸāĻž ​

bash
git rebase -i HEAD~3
# (commit squash āĻŦāĻž reorder)
git push --force
git rebase -i HEAD~3
# (commit squash āĻŦāĻž reorder)
git push --force

âžĄī¸ āĻ•āĻŽāĻŋāϟāϗ⧁āϞ⧋ merge āĻŦāĻž āϏāĻžāϜāĻŋā§Ÿā§‡ āϰāĻŋāĻŽā§‹āĻŸā§‡ āĻœā§‹āϰ āĻ•āϰ⧇ āφāĻĒāĻĄā§‡āϟ āĻĒāĻžāĻ āĻžāύ⧋āĨ¤

đŸ§Ē āωāĻĻāĻžāĻšāϰāĻŖ ā§Š: PR-āĻāϰ āχāϤāĻŋāĻšāĻžāϏ āϏ⧁āĻ¨ā§āĻĻāϰ āĻ•āϰ⧇ āϏāĻžāϜāĻžāύ⧋ ​

bash
git rebase main
git push --force
git rebase main
git push --force

âžĄī¸ pull request āĻŽāĻ°ā§āϜ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻĒāϰāĻŋāĻšā§āĻ›āĻ¨ā§āύ āχāϤāĻŋāĻšāĻžāϏ āϤ⧈āϰāĻŋāĨ¤

âš ī¸ āĻŦāĻŋāĻĒāĻĻ⧇āϰ āφāĻļāĻ™ā§āĻ•āĻž: āϕ⧇āύ --force āĻŦāĻŋāĻĒāĻœā§āϜāύāĻ•? ​

  • āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϰāĻŋāĻŽā§‹āĻŸā§‡ āĻāĻŽāύ āĻ•āĻŋāϛ⧁ āĻŽā§āϛ⧇ āĻĻ⧇āύ āϝāĻž āĻ…āĻ¨ā§āϝāϰāĻž āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇, āϤāĻžāĻšāϞ⧇ āϤāĻžāϰāĻž conflict āĻŦāĻž data loss āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āϟāĻŋāĻŽā§‡ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ unnecessary force push āĻ•āϰāϞ⧇ āϏāĻšāĻ•āĻ°ā§āĻŽā§€āϰāĻž āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤ āĻšā§Ÿā§‡ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

✅ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ: --force-with-lease ​

bash
git push --force-with-lease
git push --force-with-lease

âžĄī¸ āĻāϟāĻŋ --force āĻāϰ āύāĻŋāϰāĻžāĻĒāĻĻ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĨ¤ āĻāϟāĻŋ āφāϗ⧇ āĻšā§‡āĻ• āĻ•āϰ⧇ āĻ¨ā§‡ā§Ÿ — āϕ⧇āω āϰāĻŋāĻŽā§‹āĻŸā§‡ āĻ•āĻŋāϛ⧁ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧇āϛ⧇ āĻ•āĻŋāύāĻžāĨ¤ āϝāĻĻāĻŋ āĻ•āϰ⧇ āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ push āĻšāĻŦ⧇ āύāĻžāĨ¤

🔑 āĻāϟāĻŋ āϟāĻŋāĻŽā§‡ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ --force āĻāϰ āĻĨ⧇āϕ⧇ āĻ…āύ⧇āĻ• āύāĻŋāϰāĻžāĻĒāĻĻāĨ¤

đŸŽ¯ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻŦ⧁āĻāĻŦ⧇āύ āĻ•āĻ–āύ --force āĻ•āϰāĻž āĻ āĻŋāĻ•? ​

āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ--force āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ?
āφāĻĒāύāĻŋ āĻāĻ•āĻžāχ āĻ•āĻžāϜ āĻ•āϰāϛ⧇āĻ¨âœ”ī¸ āĻšā§āϝāĻžāρ
āϟāĻŋāĻŽā§‡ āĻāĻ•āĻžāϧāĻŋāĻ• āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ āĻ•āĻžāϜ āĻ•āϰāĻ›ā§‡âš ī¸ --force-with-lease āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ
PR āĻāϰ āφāϗ⧇āϰ āĻ•āĻŽāĻŋāϟ āĻ āĻŋāĻ• āĻ•āϰāϤ⧇ āϚāĻžāĻ¨âœ”ī¸ āĻšā§āϝāĻžāρ, āϤāĻŦ⧇ āϏāϤāĻ°ā§āĻ• āĻšā§Ÿā§‡
āĻ…āĻ¨ā§āϝ āϕ⧇āω āϏ⧇āχ āĻŦā§āϰāĻžāĻžā§āĻšā§‡āĻ“ āĻ•āĻžāϜ āĻ•āϰāĻ›ā§‡âŒ āύāĻž, āύāĻž āĻŦ⧁āĻā§‡ āĻ•āϰāĻŦ⧇āύ āύāĻž

đŸ§¯ āϭ⧁āϞ force-push āĻ•āϰ⧇ āĻĢ⧇āϞāϞ⧇ āϕ⧀ āĻ•āϰāĻŦ⧇āύ? ​

  1. āφāĻĒāύāĻžāϰ āϞ⧋āĻ•āĻžāϞ reflog āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāϗ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻžā§Ÿ āĻĢāĻŋāϰ⧁āύ:
bash
git reflog
git reset --hard <previous-commit-id>
git push --force
git reflog
git reset --hard <previous-commit-id>
git push --force
  1. āϰāĻŋāĻŽā§‹āϟ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ āĻŦā§āϝāĻžāĻ•āφāĻĒ āĻĨāĻžāĻ•āϞ⧇ restore āĻ•āϰ⧁āύāĨ¤

🧭 Workflow āωāĻĻāĻžāĻšāϰāĻŖ: Safe force push ​

bash
# āύāϤ⧁āύ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻ•āĻžāϜ
git checkout -b feature/profile-ui

# āϭ⧁āϞ commit
git add .
git commit -m "Wrong files"

# Reset āĻ•āϰ⧇ āϏāĻ āĻŋāĻ• commit
git reset HEAD~1
git add .
git commit -m "Add user profile layout"

# Push with force (since history changed)
git push --force-with-lease origin feature/profile-ui
# āύāϤ⧁āύ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻ•āĻžāϜ
git checkout -b feature/profile-ui

# āϭ⧁āϞ commit
git add .
git commit -m "Wrong files"

# Reset āĻ•āϰ⧇ āϏāĻ āĻŋāĻ• commit
git reset HEAD~1
git add .
git commit -m "Add user profile layout"

# Push with force (since history changed)
git push --force-with-lease origin feature/profile-ui

🔚 āωāĻĒāϏāĻ‚āĻšāĻžāϰ ​

👉 git push --force āĻāĻ•āϟāĻŋ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻ…āĻ¸ā§āĻ¤ā§āϰāĨ¤ āĻ­āĻžāϞ⧋āĻ­āĻžāĻŦ⧇ āύāĻž āĻœā§‡āύ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ āĻŦāĻŋāĻĒāĻĻ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ 👉 āϏāĻ°ā§āĻŦāĻĻāĻž --force-with-lease āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻŦ⧁āĻĻā§āϧāĻŋāĻŽāĻžāύ⧇āϰ āĻ•āĻžāϜāĨ¤ 👉 āĻāĻ•āĻ• āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡ āĻāĻ•āĻž āĻ•āĻžāϜ āĻ•āϰāϞ⧇ --force āĻā§āρāĻ•āĻŋāĻŽā§āĻ•ā§āϤ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϟāĻŋāĻŽā§‡ āĻ•āĻžāϜ āĻ•āϰāϞ⧇ āϏāϤāĻ°ā§āĻ•āϤāĻž āϜāϰ⧁āϰāĻŋāĨ¤

Released under the MIT License.