Git快进合并与--no-ff合并的输出是否一致?相关疑问
Git快进与非快进合并的两个问题解答
先明确场景:master分支是feature分支的直接祖先,feature分支基于master创建后仅做了线性提交,master在此期间没有新的提交(对应你提到的分支线性路径场景)
1. 快进合并与非快进合并的工作目录文件输出是否始终一致?
是的,两者的工作目录文件输出完全一致。
- 快进合并(
git merge feature)只是把master分支的指针直接移动到feature的最新提交位置,工作目录直接同步到该提交的文件状态。 - 非快进合并(
git merge --no-ff feature)会创建一个新的合并提交,但这个提交的文件内容完全继承自feature的最新提交,合并完成后工作目录同样会同步到这个状态。
两种方式最终的工作目录文件没有任何差异。
2. 当源分支到目标分支存在直接线性路径时,--no-ff合并是否会引发合并冲突?
不会。
因为此时目标分支(如master)是源分支(feature)的直接祖先,两者之间没有内容分歧——Git创建非快进合并提交时,不需要处理任何文件内容的冲突,只是生成一个包含双父节点的新提交,工作目录直接沿用feature的最新状态,所以不会触发合并冲突。
内容的提问来源于stack exchange,提问作者DumbCoder
相关产品推荐
相关产品推荐

