如何删除git rebase交互列表中不显示的多余Git提交?
问题原因
- 执行
git rebase -i --root main时只会遍历main分支的提交链路,而多余的307cfba提交并不在main分支的提交链中:它是一个仅被1.0.0标签指向的悬空提交,没有任何分支关联,所以不会出现在rebase的交互列表里。 - 该提交是打标签操作失误生成:大概率是打标签时误执行了提交操作,或是基于父提交
7d734b4生成了重复的release-1提交后打了标签,才出现了和50ccf6a平行的分叉提交。
解决步骤
- 删除本地指向多余提交的旧标签:
git tag -d 1.0.0
- 若该标签已推送到远程仓库,同步删除远程标签:
git push origin --delete 1.0.0
- 给正确的目标提交
50ccf6a重新打上1.0.0标签:
git tag 1.0.0 50ccf6a
- 若需要同步新标签到远程仓库,执行推送:
git push origin 1.0.0
操作完成后,307cfba没有任何引用指向它,会被Git的垃圾回收机制自动清理,完全不会影响main分支的现有内容。如果需要立即清理,可手动执行git gc --prune=now触发回收。
内容的提问来源于stack exchange,提问作者Laurent
相关产品推荐
相关产品推荐

