追溯svn导入git
我的问题是:追溯svn导入git,git,svn,history,Git,Svn,History,我的问题是: 我使用Subversion有一段时间了,直到我切换到Git。又过了一段时间 从Subversion到Git并没有导入历史。这是一次严格的签出,先删除.svn dirs,然后是git init。这不是明智之举 现在,数千次git提交之后,我找到了在第一次git提交时所做的Subversion repo的备份。啊哈 我想将git回购回滚到第0天,正确导入svn回购,然后重新应用所有git更改,从而纠正第一次没有做的事情 有人尝试过这个吗?我该怎么做呢?这听起来像是所有回扣之母。我从未尝
有人尝试过这个吗?我该怎么做呢?这听起来像是所有回扣之母。我从未尝试过你想要的,但我正在用CVS做类似的事情 基本上,我建议:
git fetch
git存储库中的所有内容(没有共同的提交)git-branch-remote/branch-last
和git-rebase-on-svn-last-remote/branch-first-branch-last
,其中remote/branch-first
是导入的git存储库的第一次提交,等等如果你有更多的分支,事情就更复杂了。我想重复第三步也许可以,但你最好自己试试。如果您的git历史记录中有合并,您可能需要
git-rebase-i-p…
。记住,git的优点是你基本上不会把任何事情搞砸(特别是如果你在一个单独的存储库中工作的话)。听起来像是git嫁接者的工作。这方面的文档有点粗略,但基本上您要做的是:
当然,您也可以对所有分支执行步骤3。jpalecek方法的问题是,重新基础将使您的历史变得平坦,因此,如果您有任何合并,重新基础将丢失它们。“过滤器分支”方法保持您的历史完整。这正是我为memcached所做的:写得不错,彼得。您已使git移植变得简单+1汉克斯·彼特,+1来自我。使用两个图像的相同过程也可以在两个点上找到——使用--tag name filter cat运行git filter branch以转换标记,并且,在完成时不要忘记注释掉/删除.git/info/grafts文件,否则似乎无法推送到远程存储库进行更新。