我正在使用svn。我有两个分支,并且两个分支都进行了很多更改。 除了其中一个分支之外,很多文件都被重命名,所以现在svn无法帮助我合并这些文件中的更改(知道svn限制)。
由于
答案 0 :(得分:7)
git merge
应该能够检测(最多某一点)重命名。
recursive
这只能使用3向合并算法解析两个头 此外,这可以检测和处理涉及重命名的合并 这是拉动或合并一个分支时的默认合并策略。
但是git-svn
只能从/向SVN导入/导出,而不能进行合并
合并很棘手:
<强> CAVEATS 强>
为了简化并与功能较弱的系统(SVN)进行互操作,建议所有
git svn
用户直接从SVN服务器克隆,获取和重新提交,并避免所有git clone / pull / git存储库和分支之间的合并/推送操作 在git分支和用户之间交换代码的推荐方法是git format-patch和git am,或者只是'dcommit'ing到SVN存储库。不建议在您计划提交的分支上运行git merge或git pull。 Subversion不以任何合理或有用的方式表示合并;因此使用Subversion的用户无法看到您所做的任何合并。此外,如果您从作为SVN分支的镜像的git分支合并或拉出,则dcommit可能会提交到错误的分支。
如果你做了合并,请注意以下规则:git svn dcommit将尝试在
中命名的SVN提交之上提交
git log --grep=^git-svn-id: --first-parent -1
因此,您必须确保要提交的分支的最新提交是合并的第一个父级。否则会发生混乱,特别是如果第一个父级是同一SVN分支上的旧提交。
答案 1 :(得分:1)
我曾经在大学的一个项目中遇到同样的问题。我所做的是以下内容:
git svn clone -s https://…
)git checkout master; git merge branch
)svn co https://…/trunk
)svn rm
)svn ci
)答案 2 :(得分:0)
使用SVN合并功能合并SVN分支,它会更快。 使用Git来解决这些问题非常复杂,它会产生太多的错误......