【发布时间】:2016-04-07 03:46:44
【问题描述】:
例如:
- 我有一个 master 分支。
- 我创建了一个文件
file.txt,并在其中写入Master branch,然后提交。 - 我创建另一个名为
fix20的分支,并将file.txt的文本修改为This is fix20 branch。然后我提交它。 - 我切换到 master 分支,然后创建一个分支
hotfix并切换到它。 - 我将
file.txt修改为文本This is the HotFix。之后我提交更改。 - 现在我切换回主分支并将其与修补程序合并。该文件(没有问题)将其文本更改为
This is the HotFix(它们基本上已合并)。
现在我与 fix20 分支合并,我遇到了合并冲突。 file.txt 既有来自 fix20 分支的文本,也有我与 HotFix 合并后的文本。此时,我应该打开一个编辑器并决定,应该留下什么,应该删除什么。
问题是:为什么会发生第二次合并冲突?当我将主文件与修补程序合并时,为什么我没有决定留下哪些文本?当我与 fix20 分支合并时,为什么没有合并文件(为什么文本不像修补程序那样被替换)?为什么基本上这种冲突发生第二次而不是第一次???
【问题讨论】:
-
branch fix20 的提交历史与 master 分支不同,master 没有,git(或任何其他版本工具)无法知道您是要保留两个文本还是只保留其中一个跨度>
-
@NikosM。那为什么当我将它与修补程序合并时,我想保留什么的问题没有出现??
-
因为master改变了某个commit,而fix20也有另外一个,所以工具无法知道
-
@NikosM。是否像这种情况,需要重新定位?
-
不一定,除非你想重新设置分支,例如你可能只需要添加到分支,而不是重新设置
标签: git github version-control merge