像大多数人一样,我在多项目开发中使用git
,许多开发人员和许多更改每天都会传播到主要分支。很多时候,当我将一个父分支合并到一个功能(或错误修复)分支中时,我遇到了几个我没有碰到甚至看不到的文件的冲突!Git:如何使用“他们的”未修改的文件,其余的正常合并?
背景
分公司设置:
git checkout master
git checkout -b myFeatureBranch
比方说,两个或更多时间的流逝。我的功能代码现在已准备好进行审查。注意:这里只使用master
来表示清楚,实际上它是另一个唯一命名的发布分支。许多其他开发人员将他们的错误修复和功能分支合并到master
(他们的代码评论获得批准后)。这些变化可能已影响我在我的功能分支中更改过的一个或多个文件。因此,我需要将master
合并到我的分支以获取所有最新的代码。
我的问题
我没有找到一个答案,这个具体的问题。我看着this question其中也指出to this question。有以下这些信息,如果我需要合并master
到我的特性分支,然后按照这个逻辑,我会做:
git checkout myFeatureBranch
git merge -X theirs master
我相信(从man
页)认为:
This option forces conflicting hunks to be auto-resolved cleanly by
favoring `their` version.
但这真的不是人们想要的吗?
如果在我的分支中我没有触摸到该文件,那么是的,这正是我想要的;但是,如果我修改了一个文件(并提交给我的分支),那么我想要完成正常的合并(和冲突解决)过程。在这种情况下,我不想支持theirs
。以上是否这样做?如果没有,是否有一个合并命令可以这样做?
对于冲突,两个副本都不必编辑过,如果只有一个副本有共同祖先的变化,那么不应该有冲突,那是你正在经历什么? – jrtapsell
“我碰到了几个文件,我没有碰到甚至看到冲突” - 这意味着无论如何都会触及文件。如果文件实际上未被修改,它们不会发生冲突。 – max630
[This answer](https://stackoverflow.com/a/18262173/2303202)应该有助于找出你不想改变的文件中的局部变化。 – max630