由于 Mercurial 的一些转换机制,我的 git 存储库有很多提交而没有任何更改?有没有办法从此存储库中删除所有这些无更改提交?
可以创建另一个存储库(删除提交),保持主存储库完好无损。
答案 0 :(得分:0)
假设分支是foo
。试试
git checkout foo
git rebase --root --no-keep-empty
它将所有提交重新绑定到根提交上。如果分支有多个根提交,则它是在看到合并提交时沿着第一个父提交的那个。 --no-keep-empty
修剪空提交,包括合并提交和正常提交。对于那些非空的合并提交,它会引发冲突。解决冲突并继续git rebase
。
答案 1 :(得分:0)
您想要 git filter-branch
的移植物设置为您想要的血统。将每次提交的正确祖先写入移植文件(在 .git/info/grafts
中)并说 git filter-branch --all
以使用新的祖先结构重写所有历史记录。