当git rebase -i与git reset --hard均无效时,如何删除提交B2?
移除提交B2的正确操作步骤
你的提交结构里,B2是从A分叉出的独立提交,和B1→B1.1并行。之前操作无效的原因是:你只移动了 detached HEAD,没处理指向B2的分支引用,也没清理Git的缓存记录。
- 找出指向B2的分支
先从git log --graph --all --oneline里复制B2的提交哈希,执行命令查找包含该提交的分支:
git branch --contains <B2的提交哈希>
- 删除指向B2的分支
假设查到分支名为b2-branch,用强制删除命令移除该分支(因为B2是未合并的独立提交,需要-D参数跳过Git的合并检查):
git branch -D b2-branch
- 彻底清除B2的残留记录
删除分支后,Git的操作日志(reflog)还会暂时保留B2的记录,需要手动清理:
git reflog expire --expire=now --all git gc --prune=now
第一条命令立即过期所有reflog记录,第二条命令强制Git清理所有无引用的旧提交对象。
完成后再执行git log --graph --all --oneline,B2就不会再显示了。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

