我有一个base带有名为的文件的基本分支base.md(为了理解,我添加了行号):
1:
2:
3: b
然后我签出一个新分支feat并编辑base.md如下:
1:
2:
3: b
4:
5: c
我添加了一个 commit feat-1。然后我回到分支base并编辑base.md:
1: a
2:
3: b
4:
添加提交后base-1,我想合并(使用--conflict=diff3)feat到base但发生合并冲突:
01: a
02:
03: <<<<<<< ours
04: b
05: ||||||| base
06:
07: b
08: =======
09:
10: b
11:
12: c
13: >>>>>>> theirs
14:
您可以看到b位于第 3 行ours(Current Change)但在第 4行的字符theirs(Incoming Change)和合并基础。实际上,b位于feat分支或合并基地的第 3 行。
如果我接受当前的更改,那就没问题了。但是如果传入的更改,文件将更改为:
1: a
2:
3:
4: b
5:
6: c
7:
直觉上,我认为应该没有冲突,并且更改(行c)附加到末尾。
那么为什么会这样呢?在这种情况下,git如何计算冲突?