Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Git到SVN:未能在更改中合并_Svn_Git - Fatal编程技术网

从Git到SVN:未能在更改中合并

从Git到SVN:未能在更改中合并,svn,git,Svn,Git,我在Git存储库中有一些代码需要与SVN存储库同步。我的食谱是这样的: 创建一个SVN存储库(本地的,用于测试的,将是远程的) 创建初始布局,提交1个修订 git svn clone-T'/trunk'基于初始提交的新git存储库 git remote add dev后跟一个git pull dev。现在,基于最初的SVN提交,我在存储库中有了我的主分支 git svn rebase,后面是dcommit 步骤5)但在以下情况下失败: Using index info to reconstruc

我在Git存储库中有一些代码需要与SVN存储库同步。我的食谱是这样的:

  • 创建一个SVN存储库(本地的,用于测试的,将是远程的)
  • 创建初始布局,提交1个修订
  • git svn clone-T'/trunk'
    基于初始提交的新git存储库
  • git remote add dev
    后跟一个
    git pull dev
    。现在,基于最初的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...
    
    使用索引信息重建基本树。。。
    退回到修补基础和3路合并。。。
    自动合并X
    申请:Y
    适用范围:Z
    正在使用索引信息重建基树。。。
    :269:尾随空格。
    :315:尾随空格。
    :400:尾随空格。
    *方法2.6。返回零或两个元素
    :3762:尾随空格。
    警告:4行添加空白错误。
    退回到修补基础和3路合并。。。
    

    随后出现了两条“自动合并”和“冲突(内容)”消息,重新基础最终以友好的“更改中合并失败”停止。我能做些什么来自动解决这些冲突吗?我甚至不明白在重定基址时如何发生冲突

    冲突就是冲突,git永远无法为您真正解决它们。只有人类才能确定两个相互排斥的修改中哪一个是正确的

    至于为什么在重设基础期间会发生冲突?这实际上是一种与合并相同的操作,只是导致了不同的历史。假设您在此处将提交X重设为提交D:

    - A - B - C - D
       \
        X
    

    结果内容应该与将D合并到X中的内容相同。如果提交B中存在与提交X中所做更改冲突的内容,则将存在合并冲突。无论您是合并还是重定基址,这都无关紧要。

    我放弃,而是使用
    设置树。一个
    git-rebase-p
    会生成一个历史记录,其中在根目录下有人工git-svn初始提交,然后是来自原始git存储库的初始提交

    为完整起见,我参考了三种尝试过的方法:

  • -
    git-rebase
  • -
    git svn rebase
  • -
    设置树

  • 但是,当我重新设置到一个只添加三个目录的提交(SVN标准布局)时,冲突怎么会发生?@yawn:那么,冲突是什么?你一定是在对某些内容进行重定基址。我认为这些冲突是由以前的合并造成的-重定基址可能与通过提交解决的合并发生冲突?@yawn:
    git-rebase
    默认情况下不保留合并。请参阅手册页和
    -p
    选项。