我正在用git开发一个项目。其他人已经拍摄了我的项目快照,并继续在svn开发。现在我想将svn中的更改合并回git。
有没有一种简单的方法可以将svn中的更改合并到git中?我能想到的最好的是创建一个新的git分支并手动添加所有文件。
我对git-svn的理解是它基于svn repo创建了一个新的git repo。该文档还说"不要推动并行Git存储库同时与其他Git开发人员协作",这听起来就像我想要的那样。唯一的简化是我不需要在svn中写任何东西;变化正在从svn转移到git。
答案 0 :(得分:3)
我会避免任何花哨的技巧并保持简单。
只需在git中创建一个新分支。接下来,将文件从svn分支覆盖(复制)到您的git分支。提交您的更改。
我喜欢使用visual kdiff3来合并两个文件夹,因为我假设您想要选择更改。但是,有很多很棒的工具可以合并两个相似的文件夹。
一旦文件覆盖在您的git文件之上,您最终有机会在提交之前查看更改。 Atlassian Source Tree是一个很好的工具,可以直观地查看更改,但同样有很多很棒的工具。
答案 1 :(得分:1)
你需要注意的是,使用git-svn svn-branch的历史很可能不会与你的git历史记录联系起来。所以这就是你需要做的事情。
OUR-DIV
表示git历史记录中最后一个常见提交版本的sha,THEIR-DIV
表示导入的svn历史记录中最后一个常见提交版本的sha。git replace $THEIR-DIV $OUR-DIV
(请参阅docu of git replace)svn_branch
查看新的git log
,看看结果是否符合您的喜好。如果是,请运行:
git filter-branch svn_branch
svn_branch
推送到主git仓库之后,您无法简单地将更改从svn导入svn_branch
。如果你想这样做,你需要删除svn_branch
,导入你的更改,然后从第6步重新开始。但我并不是100%确定这绝对会有效。小心处理。