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/

相关文章:

javascript - 新手将我的 GA 代码放入他们的网站时出现问题

git - 无法在 merge 过程中软重置 git 存储库,但没有 merge 可以中止

svn - 为什么在将分支合并到主干然后将其合并回分支时会发生冲突?

git - 如果我取消 git pull 会发生什么?

git - showcompare 命令的 TortoiseGitProc 命令行参数

ssh - tortoisegit设置-> git->远程不显示

git 不会在 VS Code 或我的事件栏中注册?

django - 修改模型后如何更新已部署的 django-app 的数据库(postgresql)?

git - 为什么文件夹 '.git'的大小可以小于工作目录?

git - 使用 GitHub API 创建文件夹