[英]Does git reset HEAD~ on master automatically merge a branch merge conflict
[英]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
。 但是,如果B
和C
没有更改相同的文件,您仍然不会遇到合并冲突,因为 git 可以计算出如何自动合并它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.