这是我的情况:
我有两个要素分支A和B。
我想结合这两个分支。
我做了以下事情:
创建一个从A分支的新分支C
签出新分支C
从命令行运行git merge B
我希望两个分支合并。如果对同一文件的更改有冲突,则该命令应引发合并冲突。
但是实际上,在分支A和B中存在一个具有不同内容的同一个文件,但是没有报告合并冲突。而是,分支A中文件的内容被分支B中文件的内容覆盖。
我不知道为什么没有报告合并冲突,更担心为什么文件的内容被覆盖。
任何提示或指针都会有所帮助。谢谢。
答案 0 :(得分:1)
让我们列出发生的事情。
- 我有两个要素分支A和B。
通常是这样的。
4 - 5 [A]
/
1 - 2 - 3 - 6 [master]
\
7 - 8 [B]
A和B从master
分支出来。他们分歧了。
但是你可能有这个。
6 - 7 [B]
/
4 - 5 [A]
/
1 - 2 - 3 - 6 [master]
这里B从A分支出来。B共享A的所有提交。让我们假设。
- 创建一个新的分支C,从A分支出来
在Git中创建新分支只会在与A相同的提交时创建一个新标签。
6 - 7 [B]
/
4 - 5 [A][C]
/
1 - 2 - 3 - 6 [master]
- 签出新分支C
- 从命令行运行
git merge B
发生这种情况时,Git注意到C是B的祖先。因此它执行“快进”,这意味着它不会为合并而烦恼,它只是将C推进到B所在的位置。
6 - 7 [B][C]
/
4 - 5 [A]
/
1 - 2 - 3 - 6 [master]
如果A和B更改了相同的文件,则似乎B覆盖了A中的更改。
git log
和Github不幸地弄平了您的Git历史记录,给您一个错误的印象,即它是线性的。您可以使用git log --graph --decorate --all
查看存储库的真实结构,并在此处检查其是否符合方案。