[英]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.