合并期间文件被替换

时间:2018-06-15 12:22:44

标签: git

看看这个序列:

首先,我正在克隆一个空的存储库:

      git clone http://mygitlabserver/myuser/project1.git
      cd project1

然后我用这个内容创建一个main.c文件:

#include <stdio.h>

int main(int argc, char *argv[]) {
        return 0;
}

我添加并提交了我的程序的第一个版本:

git add main.c 
git commit -m "first version"

然后,我创建一个分支,然后切换到这个分支:

git branch branch1
git checkout branch1

在这个分支中,我对main.c文件进行了更改:

#include <stdio.h>

int main(int argc, char *argv[]) {
        return 1;
}

如您所见,这是一个非常基本的变化(0到1)。

我在branch1上添加并提交此更改:

git add main.c 
git commit -m "version with return 1"

现在,我想将branch1合并到master分支。这是我输入的内容:

git checkout master
git merge branch1

我没有关于冲突的警告,这是我不明白的。 以下是master分支中main.c文件的内容:

#include <stdio.h>

int main(int argc, char *argv[]) {
    return 1;
}

所以我的main.c文件被branch1中的文件替换了。有时,我看到我的main.c文件有这样的东西:

    #include <stdio.h>

    int main(int argc, char *argv[]) {
==============================
        return 0;
==============================
        return 1;
==============================
    }

但在我的例子中并非如此。我的问题是......为什么?

由于

1 个答案:

答案 0 :(得分:1)

没有冲突。两个分支与上次提交“第一个版本”具有相同的历史记录,并且此提交是main分支上的最后一个,这使得合并变得微不足道。将branch1合并到master会将提交“返回1的版本”应用于您在branch1上创建它时应用它的方式。

如果你已经创建了例如在main分支上提交“带有返回2的版本”(显然将return 0更改为return 2),然后历史将发生分歧并且差异将适用于文件的同一部分。这会导致冲突。