my-git

Recover Force Push

force push 覆盖远端分支后,先找回正确 commit。

如果有人本地还保留旧分支,通常可以恢复。

先冻结现场

先通知团队暂停向相关分支 push。

然后在本地检查:

git reflog
git log --oneline --decorate -20

也可以让同事在本地找:

git reflog
git log --oneline --decorate -20

找到正确 commit

确认 good sha 后,先建备份分支:

git branch backup-good-main <good-sha>

检查内容:

git show --stat <good-sha>
git diff <bad-sha>..<good-sha>

恢复远端分支

git push origin <good-sha>:main

如果主分支受保护,需要管理员处理。

后续补救

延伸阅读