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

时间:2021-02-22 06:16:06

标签: git git-commit

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

可以创建另一个存储库(删除提交),保持主存储库完好无损。

2 个答案:

答案 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 以使用新的祖先结构重写所有历史记录。

相关问题