git - Git 没有检测到同一行的代码冲突
问题描述
我正在学习 git,我尝试了以下示例:在主分支中,我创建了一个文件 1.txt,其中包含一行 hi
然后我切换到一个新分支“mybranch”并将同一行编辑到此,hello
而不是hi
当我回来时到 master 分支并运行 git merge 命令git merge mybranch
它没有检测到这是我应该解决的冲突,而是用 hello 替换单词 hi 基本上它替换了 master 分支中的一些代码而不让我知道我的问题是为什么不git 认为这是一个冲突,即使 bitbucket 网站说
当两个单独的分支对文件中的同一行进行编辑时会发生冲突
解决方案
忽略重命名,Git 中合并的工作方式是 Git 考虑历史中的三个点:两个分支的头部和合并基础,它通常是最近的共同祖先。Git 通过查看合并基础和每个头部(通常是一个分支)之间的变化来进行合并。
如果一侧包含更改,例如 on mybranch
,而另一侧没有更改,例如master
,则合并的结果就是更改。这就是为什么首先要执行合并的目标。如果双方有相同的更改或双方都没有更改,则 Git 采用通用版本。只有当双方在同一区域有不同的更改时才会发生冲突,因为 Git 不知道该怎么做。
推荐阅读
- ruby-on-rails - Is there a way to make a model method in active record?
- javascript - 移动右滑块时,Jquery范围滑块正在改变左滑块的值?
- android - 协调器布局 - 折叠内容交互与回收器视图
- sql - 通过从 With 语句创建的 Select 语句中插入数据来创建表
- flutter - Flutter 导航栏 - 从另一个页面更改选项卡
- django - 在 Heroku 上运行我自己的守护进程,我如何从 Internet 上联系它?
- oauth-2.0 - FeathersJS:OAuth 用户的 REST 身份验证
- jquery - 检查一个形状是否适合另一个(2D 平面)
- python - 如何使用 gitlab-ci 部署单个 python 脚本?
- xslt - 用于垂直和水平布局的动态/通用 XSLT