我有一个现有的SVN回购,我想将其中的一部分导入历史记录到现有的Git仓库中。任何人都可以给我一个关于执行此操作所需命令的高级概述吗?
要点:
我有一种感觉,这涉及git filter-branch
和一些奇怪的合并。任何帮助将不胜感激。
答案 0 :(得分:9)
事实证明这很复杂,但这就是我所做的。
首先准备SVN存储库。我之后打算从SVN删除文件,因此它有助于将所有文件放在一个目录中(这也使得filter-branch
以后更容易。)
使用git:git svn clone http://path/to/svnrepo
检出SVN仓库。这会创建一个svn repo的git版本。
使用此SO帖子Detach (move) subdirectory into separate Git repository中的提示,我使用filter-branch --subdirectory-filter
来过滤我想要的目录,并从SVN中删除其他我不想要的内容的历史记录保持git。您还可以使用git subtree
这一新功能,如Howto extract a git subdirectory and make a submodule out of it?
然后,使用此SO帖子How do you merge two Git repositories?中的想法,我将新的git repo导入到我想要添加到其中的父项目中。接受的答案不正确,请查看该页面上的其他答案;您想要git remote add git-proj <path>
后跟git pull
。
最后,将更改推送到git项目。