我使用git-svn从一个大的svn存储库(git svn clone)创建了一个存储库。 我在我的git存储库中有几个本地提交,我不需要推送到svn但我需要从它获取更新。
现在我意识到我不需要在我的本地存储库中使用整个svn历史记录,因为它使用了太多空间(一些Gb)并且我应该在clone命令中使用-r选项来选择一个起点
我想从一个新的存储库重新开始,然后合并旧存储库中的所有本地提交,但我不确定是否有一种简单的方法可以做到这一点。
情况如下:
旧存储库的日志:
新存储库只有一个提交,对应于svn存储库的修订版X的竞争。
我尝试使用format-patch并应用命令,但我不确定如何执行此操作。
有办法做我需要的吗?
感谢您的帮助
答案 0 :(得分:2)
在您的新存储库中有一种方法:
git remote add old
您的旧存储库; git fetch old
; git rebase --onto
。完成后,git remote rm
旧回购邮件和git gc
。
请参阅git help rebase
了解--onto
选项:它非常非常有用。
答案 1 :(得分:2)
您可以从SVN存储库中检出修订版X并删除所有与SVN相关的文件夹。然后是git init && git add . && git commit -m "Importing revision X from SVN"
。现在你已经有了一个Git存储库,其中包含SVN修订版X的快照。
之后您可以使用git format-patch
从旧的Git存储库创建补丁。 git format-patch x..
其中x
是与SVN的修订版X等效的提交。它将生成补丁文件。在旧的Git存储库中执行它。
随后,在新的存储库中,您可以git am all_those_patches.*
将它们应用到新存储库中。