【发布时间】:2019-07-25 15:19:22
【问题描述】:
我已经回答了以下问题:
- Git merge conflicts on files that are changed by one branch only
- How to avoid getting git errors/conflicts on untouched files?
- Git merge conflicts when no changes done
但我没有找到合理的解释。所以试图打开一个新线程。
问题:当我将“master”合并到我的开发分支 (dev-branch) 时,我在 dev-branch 上未修改的文件出现合并冲突。
程序:
- git checkout master
- git pull --ff-only(更新主分支到最新的变化)
- git checkout dev-branch
- git merge --squash master
- 导致我未修改的文件发生冲突
问题:
- 为什么我会看到冲突?
- 为什么 GIT 不能自动解决它们,因为我的分支上没有任何更改?
- 如何避免这些冲突?
===编辑:2019 年 6 月 12 日===
我开始观察我的合并行为以缩小问题范围并发现以下问题。每当我开发需要很长时间的东西时,我倾向于经常更新我的开发分支以避免不得不进行一次大的合并。
如果我在分支上工作,比如说 dev_branch,我曾经将 master 合并到 dev_branch,然后继续我的开发,并重复此操作每隔一段时间就走一步。但我发现有用的是实际上将 dev_branch 合并到 master 并再次从它分支到新的开发分支 dev_branch_1 (请注意,我是尚未在 master 上提交任何内容,因为开发尚未完成)并在新分支上继续开发。到目前为止,这似乎对我有用,可以避免这些讨厌的合并冲突。
【问题讨论】:
-
会不会是你弄错了行尾?因为你得到冲突的原因是因为文件被改变了。
-
绝对不是行尾,因为当我开始解决这些冲突时,它们确实是实际的代码更改。