即,我有:混帐:如何删除历史特定之前提交
root -- c1 -- c2 -- .. - c1000 -- c1001 -- c1002 -- .. -- c2000 -- top
,我想有:
root = c1000 -- c1001 -- c1002 -- .. -- c2000 -- top
如何?
(我想我可以通过git filter-branch
做,但究竟如何?)
(当然,我知道这意味着历史的重写......)
即,我有:混帐:如何删除历史特定之前提交
root -- c1 -- c2 -- .. - c1000 -- c1001 -- c1002 -- .. -- c2000 -- top
,我想有:
root = c1000 -- c1001 -- c1002 -- .. -- c2000 -- top
如何?
(我想我可以通过git filter-branch
做,但究竟如何?)
(当然,我知道这意味着历史的重写......)
最简单的方法是用一个git移植。如果您编辑文件的.git /信息/移植,就可以把线格式
[ref] [parent1] [parent2] ...
任何提交左侧引用,然后仿佛右侧列出的父母都是处理的文件中该承诺的父母。所以,你可以插入一行像
c1000
,这将被视为尽管它有没有父母。然后可以通过运行git-filter-branch来“通过石头烘焙”。
我发现下面的有用与不同的根创建新的回购协议(这是我认为当你说删除历史之前提交你问):
git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout)
(你能做到以上在相同的回购)
伟大的提示!从另一个项目的分支创建一个干净的项目非常方便,但没有git filter-branch的麻烦。 – Claudio
这篇文章很老,但我希望我能得到答案。有没有办法在导入时保留Commit ID? –