将 master 合并到功能分支并解决冲突

问题描述 投票:0回答:1

假设我有一个基于 master 的 feature_branch 并包含提交 D 和 E。之后,master 收到两个新提交 F 和 G :

master:        A---B---C---F---G
                       \
feature_branch:         D---E

当我将 master 合并到我的 feature_branch 以合并新的更改时,我遇到了一些冲突。解决 feature_branch 中的这些冲突后,会在 feature_branch 中创建合并提交(我们称之为 M)。此时,历史是这样的:

master:        A---B---C---F---G
                       \        \
feature_branch:         D---E---M

现在,我感到困惑的是:master 分支仍然指向提交 G,这是在 feature_branch 中发生冲突解决之前的最后一次提交。

当我稍后将 feature_branch 合并回 master 时,我得到了快进合并,为什么我不会再次遇到相同的冲突,因为冲突解决引入了不同的更改? Git 如何处理这种情况?

我尝试将 feature_branch 合并回分支,并期望再次遇到相同的冲突,因为冲突解决方案已更改文件,但主分支指向具有该文件的另一个版本的先前提交。

git git-merge git-merge-conflict
1个回答
0
投票

你需要消化合并工作的方式。当您将分支

A
B
合并时,合并时考虑的是粗略地在它们最后一个共同祖先之后引入的更改。当您将
M
合并到
master
时,get 不会考虑来自
C
位的两个分支中来自
G
的更改(两个分支历史记录中存在的最后一次提交)。如果没有发生会产生冲突的变化,那么就不存在冲突。而且,分支历史上某个时刻发生冲突的速度与 git 无关......它考虑的只是
G..master
G..feature_branch
之间的差异。

旁注:在这种情况下,您有一个快进,因为在

master
之后
G
中没有提交.....如果过去
G
有提交,那么根据差异,您会遇到冲突
G..master
G..feature-branch
....很可能不会发生冲突。

© www.soinside.com 2019 - 2024. All rights reserved.