GitHub提交记录重复如何删除?Git新手求详细操作方案
解决提交重复问题的详细步骤
1. 先备份仓库(必做!)
复制整个本地仓库文件夹到电脑其他位置,防止操作失误丢失数据。
2. 打开终端进入仓库目录
找到你的本地仓库文件夹,右键打开终端(Windows用Git Bash,Mac/Linux用系统终端),确保当前路径是仓库根目录。
3. 找到修改日期后的最后提交哈希
执行以下命令查看提交历史和分支图:
git log --oneline --graph
你会看到类似这样的分支结构:
* 1234567 (HEAD -> main) Merge remote-tracking branch 'origin/main' | * abcdefg 修改后的提交X | * hijklmn 修改后的提交Y * | 890abcd 远程原来的提交X * | wxyzefg 远程原来的提交Y
这里abcdefg和hijklmn是你修改日期后的提交,找到这条线的最后一个提交哈希(比如上面的abcdefg)。
如果找不到,也可以查看操作日志定位:
git reflog
找带有filter-branch: rewrite的记录,对应的哈希就是你修改后的最后提交。
4. 重置本地分支到修改后的提交
把找到的哈希替换下面命令中的[你的修改后提交哈希],执行:
git reset --hard [你的修改后提交哈希]
这个命令会把本地main分支强制恢复到你修改日期后的状态,丢弃掉pull进来的重复提交。
5. 强制覆盖远程仓库的重复提交
执行强制推送命令,把本地正确的历史推送到远程:
git push origin main --force
执行后远程的提交就会和你修改后的一致,重复提交会被删除,贡献图也会恢复正常。
问题原因说明
你用git filter-branch修改提交日期后,Git会重新生成所有被修改提交的哈希值,导致本地历史和远程仓库的历史变成两个完全无关的分支。此时用--allow-unrelated-histories执行git pull,Git会把这两个无关分支合并,最终出现提交重复的情况。
内容的提问来源于stack exchange,提问作者이민영
相关产品推荐
相关产品推荐

