繁体   English   中英

如何从 git 存储库中删除所有无更改提交?

[英]How to remove all no-change commits from git repository?

由于 Mercurial 的一些转换机制,我的 git 存储库有很多提交而没有任何更改? 有没有办法从这个存储库中删除所有这些无更改提交?

可以创建另一个存储库(删除提交),保持主要的完整。

假设分支是foo 尝试

git checkout foo
git rebase --root --no-keep-empty

它将所有提交重新定位到根提交。 如果分支有多个根提交,则它是第一个父级在看到合并提交时的那个。 --no-keep-empty修剪空提交,包括合并提交和正常提交。 对于那些非空的合并提交,它会引发冲突。 解决冲突并继续git rebase

您想要git filter-branch ,并将移植物设置为您想要的祖先。 将每次提交的正确祖先写入嫁接文件(在.git/info/grafts中)并说git filter-branch --all以使用新的祖先结构重写所有历史。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM