git - 为什么git认为这是cherry pick之后的冲突?

标签 git conflict tortoisegit

我在 Windows 上使用 TortoiseGit,我有 2 个分支。但是当我从另一个分支挑选提交时,我经常会收到“冲突”报告。但是当我试图解决这些“冲突”时,很多时候我很困惑和愤怒(如下图的情况),这怎么会是冲突呢?一个文件没有任何内容,而另一个文件有一些新行,这再简单不过了。为什么 git 将此视为冲突?谁能解释一下?谢谢..

why this was marked 'conflict' by 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/

相关文章:

ruby - 使用 Rugged/libgit2 创建提交时如何更新工作目录?

swift - UIPanGestureRecognizer - 避免同时移动两个图像 - Swift

TortoiseGit,忽略行尾

git - 无法在 repo 协议(protocol)中 rebase 和​​管理 Excel 工作表的冲突

windows - 我无法使用 TortoiseGit 推送本地修改

linux - 在开源开发中,补丁和 git 提交有什么区别?

git - 上游分支和远程跟踪分支有什么区别?

python - 从私有(private) bitbucket 存储库 tar.gz 文件进行 pip 安装

由于多个样式表导致 css 选择器特异性冲突

git - 如何解决 Webmatrix 3 中的 GIT 冲突?