【问题标题】:Git does not detect a conflict in code on same lineGit 没有检测到同一行的代码冲突
【发布时间】:2021-01-09 16:04:44
【问题描述】:

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

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

【问题讨论】:

  • 因为只有当有不同的更改无法合并时才会发生冲突。例如,如果您在 分支后对 master 进行了额外提交,将“hi”更改为“hey”,那么当您尝试合并时会看到冲突,因为 git 不知道是否结果应该是“嘿”或“你好”。但是,如果每一次更改都算作冲突,那么每次合并都是可怕的。

标签: git merge conflict


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    相关资源
    最近更新 更多