如何用2个远程repos解决git merge / rebase冲突?

时间:2012-10-05 00:37:54

标签: git merge rebase git-rebase merge-conflict-resolution

有git rebase冲突的问题,但仅在使用2个远程回购时。这是工作流程:

  1. 做好工作......
  2. 提交
  3. pull -r staging master
  4. 这很好用。如果发生冲突,我可以解决。

    然后在使用生产远程仓库时出现问题。我是唯一一个推动生产的人。

    1. git pull -r production(在出于某种原因推动生产之前需要这样做......不知道为什么,因为它应该是一个快速推进。)
    2. git push production
    3. git pull -r staging(更新我的回购)
    4. 在这里,我对我尚未处理过的文件产生各种合并冲突。

      冲突可能如下所示:

      <<<<<<< HEAD
        here's some code...
      =======
        more code...
      >>>>>>> commit foo
      

      所以,问题如下:

      1. 当我是唯一一个推动它的人时,为什么我需要从生产中撤出?
      2. 为什么在已提交的代码上存在合并冲突且我没有更改?
      3. 我会选择哪个提交? HEAD或者提交foo
      4. 什么是更好的过程,所以它不会发生?

1 个答案:

答案 0 :(得分:1)

这是你的pull --rebase对两个单独的远程仓库完成的直接副作用:你在刚刚获取的远程HEAD之上重新定位现有的本地提交,确保创建一个新的HEAD SHA1不存在于您的第二个远程仓库(例如prod

在同一个远程仓库的同一分支上进行协作时,您可以将pull --rebase用于从未在任何地方推送过的提交,详见“When should I use git pull --rebase?”。

但是当你有2个遥控器回购时,你应该在第一次推送后避开它,如“When will git pull --rebase get me in to trouble?”所示。

有关该主题的更多详细信息,请参见“What git branching models actually work?”。