如何管理基本上两个主人的git合并?

时间:2017-03-06 16:36:38

标签: linux git merge

我们有以下情况:

  • 在时间点t0,我们在Unix中拍摄了C ++项目的快照,但尚未完成(在Unix下发布1702),并且正在迁移到Linux。这是在新的GIT服务器中建立的Master。
  • 在时间点t1,我从Master创建了一个名为1702的新分支,并使用最新的Unix代码覆盖了所有内容。
  • 在t1期间,我创建了另一个分支linux_not_working,它是Master分支的克隆。

现在,我尝试将1702合并到linux_not_working中,使用git mergetool来处理冲突,结果很糟糕:例如我修改了所有项目的Makefile以在Linux中工作,并且合并甚至没有显示冲突,只是用1702分支中的旧Unix替换它们,我也没有找到如何告诉vimdiff从REMOTE获取ALL而不是LOCAL(据我所知,BASE在这个特定的合并中没有任何意义)。

  • 如何最好地执行此合并,从某种意义上说,我有两个大师赛?我需要从1702采取任何新增功能,同时保持我的自定义在linux_not工作(手动,但它的很多文件,所以樱桃选择不理想)。
  • 对未来的任何建议?他们将不得不至少再做一次,而承包商正在开发1703版本,只有后来的生产开发才会转向Linux。

基本上,我想要做的是让GIT告诉我每个文件:“文件R和L是不同的,你要保留哪一个?(允许我采取每个文件的不同部分,如果碰巧有被两个分支修改了“”

谢谢!

1 个答案:

答案 0 :(得分:0)

  

基本上,我想要做的是让GIT告诉我每个文件:"文件R和L是不同的,你要保留哪一个? (允许我采取每个部分的不同部分,如果碰巧已被两个分支修改)"

如果您不需要3向合并,则只需查看分支机构的内容,然后使用git gui查看更改。

$ git checkout -b manual-merge linux_not_working
$ git checkout 1702 . # overwrites source with 1702's one
$ git gui             # take or leave each diff
$ git commi

(或者你可能想要倒退。)

$ git checkout -b manual-merge-2 1702
$ git checkout linux_not_working .
$ git gui
$ git commit

手动合并结果后,您可以覆盖并提交为合并。

$ git checkout 1702
$ git merge linux_not_working
$ git reset
$ git checkout manual-merge . # or manual-merge-2
$ git commit