Git 未检测到同一行代码中的冲突

问题描述

我正在学习 git 我尝试过以下示例: 在主分支中,我创建了一个文件 1.txt,其中有一行 hi 然后我切换到一个新分支“mybranch”并将同一行编辑到这个 hello 而不是 hi 当我回到主分支并运行 git merge 命令 git merge mybranch 时,它没有检测到这是一个我应该解决的冲突,而是将单词 hi 替换为 hello 本质上它在不让我知道的情况下替换了 master 分支中的一些代码 我的问题是为什么 git 不认为这是一个冲突,即使 bitbucket 网站说

当两个独立的分支对文件中的同一行进行编辑时会发生冲突

解决方法

合并在 Git 中的工作方式,忽略重命名,是 Git 考虑历史中的三个点:两个分支的头,合并基,通常是最近的共同祖先。 Git通过查看merge base和每个head(通常是一个分支)之间的变化来进行合并。

如果一侧包含更改,例如在 mybranch 上,而另一侧没有,例如 master,则合并的结果是更改。这就是为什么首先执行合并的目标。如果双方都有相同的更改或双方都没有更改,则 Git 会采用通用的版本。只有当双方在同一区域有不同的变化时才会发生冲突,因为 Git 不知道该怎么做。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...