Git pull --rebase:冲突文件的自动合并

时间:2015-11-06 13:50:02

标签: git

当我想从分支上的master检索更改时:

git pull --rebase

并且我在我的分支中修改的文件上对master进行了修改,在此文件上进行了自动合并。 生成的文件是主修改和分支修改的混合。

为什么我没有像我预期的那样带有冲突标记区域的文件?

修改 这是我遇到的问题描述,这是我的问题的起源。 在分支B上,我有一个实现接口IC的C类。我在本地添加了一个方法C.同一分支上的另一个人推动了一些修改。其中一个修改是:向IC添加方法并向C添加方法实现。此方法是我之前添加的方法。 拉动之后,Git自动合并了文件C和2个方法,C类中存在相同的签名。 这就是我想禁止自动合并的原因。

1 个答案:

答案 0 :(得分:0)

没有获得此类文件的原因是因为没有冲突。如果没有冲突,一切都可以干净地合并。如果发生一些冲突,git会警告你,让你启动一个合并工具或让你手动修改冲突的行

修改 如果你想让git强制通知你它合并的文件(即强制冲突),你应该制作一个自定义合并驱动程序,参见例如Git - how to force merge conflict and manual merge on selected file

修改 关于你的评论: 在" pull branch"中,主要有两个变化:

  1. 删除第X行的代码块
  2. 在第Y行添加代码块。
  3. 预期的行为是,如果第X行的代码块在master中未更改,则在合并后发生两次更改:在X处删除代码块并在Y处添加代码块。

    这正是git所做的!如果将这样的分支合并到master中,之后该方法将仅在文件中出现一次,即在将其移动到的位置

    可能出错的地方:如果你有两个分支:A和B.在A中,你将一个方法移动到第Y1行,在B中,你将同一个方法移动到第Y2行。 Git认为:两个分支都共享"删除",这里没有冲突。没有冲突(因为Y1和Y2相距很远)......

    但是,您描述的用例(方法仅在一个分支中移动)将不会产生任何问题。