我在 Windows 上使用 TortoiseGit,我有 2 个分支。但是当我从另一个分支挑选提交时,我经常会收到“冲突”报告。但是当我试图解决这些“冲突”时,很多时候我很困惑和愤怒(如下图的情况),这怎么会是冲突呢?一个文件没有任何内容,而另一个文件有一些新行,这再简单不过了。为什么 git 将此视为冲突?谁能解释一下?谢谢..
最佳答案
我已经重现了一个案例,在这个案例中,在明显的无对立的非冲突背后存在真正的冲突。
基础提交:
foo
bar
baz
master 上的下一次提交删除了 baz
foo
baz
在另一个分支上的下一次提交在同一位置添加了一些东西
foo
spam
bar
baz
当我尝试将分支 merge 到 master 时,我遇到了这个冲突:
foo
<<<<<<< HEAD
=======
spam
bar
>>>>>>> plus
baz
显然是误报,master 上什么都没有,在另一个分支上添加了一些东西。
但实际上,警报不是假的,但 Git 放入文件中的信息肯定是假的:它列出了 bar
, 在 master 上删除,在另一个分支上添加。
所以 Git 是有问题的,但以一种非常微妙和令人惊讶的方式。他们显然试图将一些信息放入 >>>>>>>=======<<<<<<<
符号,但删除-添加冲突不适合它,因为它需要有关 merge 基础的附加信息。或者以任何其他方式区分“由他们添加”和“由他们保留”。
关于git - 为什么git认为这是cherry pick之后的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32857992/