繁体   English   中英

Git 在主分支中合并具有更改文件的分支时不会引发合并冲突

[英]Git does not raise merge conflict when a branch with a changed file is merged in the master branch

当我尝试将分支合并到 master 时,我期待合并冲突。 这两个分支都有一个文本文件,其中包含不同的文本。

# make project directory
mkdir projA
cd projA

# initialize git repo
git init

# make commit in master branch
echo "text 1" > fileA.txt
git add .
git commit -m "commit A"

# make commit in a new branch
git checkout -b branch1
echo "text 2" > fileA.txt
git add .
git commit -m "commit B"

# merge branch into master
git checkout master
git merge branch1

但是 merge 命令只是进行快进合并,并保留 brach1 的 txt 文件中存在的文本,而不是 master 分支。

有人可以向我解释为什么 git 没有引发合并冲突吗?

当您正在合并的分支的提交历史无法自动协调(通过快进或合并提交)时,就会发生合并冲突。

您对 master 的提交历史是: A
您对 branch1 的提交历史是: A - B
因此,将 branch1 合并到 master 不会导致冲突,因为它需要做的就是将B应用到A之上。

假设您有另一个提交C ,这样:
您对 master 的提交历史是: A - C
您对 branch1 的提交历史是: A - B
然后您可能会遇到合并冲突,因为您的分支说将C应用于A而另一个分支说将B应用于A 但是,如果BC没有更改相同的文件,您仍然不会遇到合并冲突,因为 git 可以计算出如何自动合并它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM