这是我的问题:
我想将git repo回滚到第0天,正确导入svn repo,然后重新应用所有git更改,从而纠正第一次没有做的事情。
有没人试过这个?我该怎么做呢?这听起来像是所有篮板的母亲。
答案 0 :(得分:15)
听起来像git移植的工作。这方面的文档有点粗略,但基本上你想要做的是:
当然,您也可以为所有分支机构执行第3步。 jpalecek方法的问题在于,rebase会使你的历史变平,所以如果你有任何合并,那么rebase就会失去它们。过滤器分支方法可以保持您的历史记录不变。
答案 1 :(得分:1)
我从未尝试过你想要的东西,但我正在做与CVS类似的事情。
基本上,我建议:
git fetch
来自git存储库的所有东西(不会有共同的提交)git branch remote/branch branch-last
和git rebase --onto svn-last remote/branch-first branch-last
,其中remote/branch-first
是您导入的git存储库的第一次提交,等等。如果你有更多的分支,事情会更复杂。我认为重复第3步可能会这样做,但你最好自己尝试一下。如果您在git历史记录中有合并,则可能需要git rebase -i -p ...
。请记住,git的优点是你基本上不能搞砸任何东西(特别是如果你在一个单独的存储库中工作)。