修改Git历史提交作者后出现重复提交,如何清理或恢复?
解决Git历史提交重复及恢复问题
方案一:清理重复提交(保留关联GitHub账号的正确提交)
你已经通过rebase修改了所有历史提交的作者信息,远程仓库目前同时存在旧提交和新提交,只需强制推送本地修改后的分支覆盖远程即可:
- 先确认本地当前分支无未提交改动:
git status - 执行强制推送(推荐用
--force-with-lease,比--force更安全,避免意外覆盖他人改动;你的仓库仅自己使用也可直接用--force):git push --force-with-lease
推送完成后,GitHub上的旧提交会被替换为修改后的新提交,重复记录将消失。
方案二:恢复到提交未关联账号的原始状态
如果想撤销所有作者修改操作,回到最初的提交状态:
- 查看Git操作日志,找到rebase操作之前的分支版本哈希:
在输出中定位到git reflogrebase操作条目之前的记录,对应的一串哈希值(比如a1b2c3d)就是你rebase前的分支状态。 - 重置本地分支到该历史版本:
git reset --hard <找到的哈希值> - 强制推送到远程仓库,覆盖当前修改:
git push --force-with-lease
完成后远程仓库将恢复到修改作者前的状态。
注意:强制推送会改写远程仓库的历史记录,务必确认仓库仅你一人使用,不会影响其他协作者的工作。
内容的提问来源于stack exchange,提问作者Colin
相关产品推荐
相关产品推荐

