首页 > 解决方案 > Git 没有检测到同一行的代码冲突

问题描述

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

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

标签: gitmergeconflict

解决方案


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

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


推荐阅读