我在Git存储库中有一些代码需要与SVN存储库同步。我的食谱看起来像这样:
git svn clone -T '/trunk' <REPO>
基于初始提交的新Git存储库。git remote add dev <ORIGINAL>
后跟git pull dev <ORIGINAL_BRANCH>
。现在我基于最初的SVN提交在存储库中拥有我的主分支。git svn rebase
后面会跟dcommit
。步骤5)失败了:
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging X
Applying: Y
Applying: Z
Using index info to reconstruct a base tree...
<stdin>:269: trailing whitespace.
<stdin>:315: trailing whitespace.
<stdin>:400: trailing whitespace.
* Method 2.6. Returns zero or two elements
<stdin>:3762: trailing whitespace.
warning: 4 lines add whitespace errors.
Falling back to patching base and 3-way merge...
随后出现了一些“自动合并”和“CONFLICT(内容)”消息,rebase最终停止了友好的“无法合并更改”。我可以做些什么来自动解决这些冲突?我甚至不理解在重新定位时如何发生冲突!
答案 0 :(得分:3)
冲突是冲突,git无法真正解决它们。只有一个人可以肯定地说两个相互排斥的修改中哪一个是正确的。
至于为何你可以在rebase期间遇到冲突?它与合并实际上是一种操作,只会导致不同的历史记录。假设你将X提交到提交D:
- A - B - C - D
\
X
结果内容应该与将D合并到X中的内容相同。如果提交B中的某些内容与提交X中的更改冲突,则会发生合并冲突。无论您是合并还是重新定位都无关紧要。
答案 1 :(得分:1)
我放弃并使用set-tree
代替。 git rebase -p
导致在root上使用人工git-svn初始提交的历史记录,然后是原始Git存储库的初始提交...
为了完整起见,我尝试了三种方法:
git rebase
git svn rebase
set-tree