首页 > git merge合并

git merge合并

现有主干 A,分支 B;执行

git checkout A
git merge B

在这里有个问题:在 B 中删除了一些文件(这些文件 A 中是存在的),执行合并后,A 中相应的文件会不会删除,B 中增加的文件在 A 中又是怎样表现的?因为我合并后,进行编译报错,在 B 中编译没报错的,是不是合并后更改了某些文件?


首先, 你要确认你的merge成功了. 在两个branch下面对同一个文件进行了变更. 会产生冲突.
即conflict.会导致automerge失败. 这时候你要进行手动修改.
git status 查看有没有冲突的文件 如果有的话,打开文件你会看到冲突的点会有.
>>>>>>A
A的内容
======
B的内容
<<<<<< B
这样的的格式的东西. 修改成你想要的内容.就是把A的内容删除. 然后保存. git commit来完成merge.


建议用一个简单的git Repo来模拟你说的情况,实践出真知。


git merge 既不是取交集,也不是取并集,而是文件更改历史重放所有的修改

比如这样的分支结构:

      A---B---C topic
     /
D---E---F---G master

然后执行:

git checkout master
git merge topic

那么 merge 的时候就是做了以下事情:

如果 A 到 C 的过程中修改了 F 到 G 里面任何一个文件,那么就很可能会冲突,除非它们对同一个文件的修改完全一样。

回到题主的问题。如果 B 删除了文件 foo,而 A 里面并没有任何提交跟 foo 相关,那么 foo 就会被删除;如果 A 里面修改了 foo,那么合并就会冲突,git 仓库会进入 MERGE 状态。你可以通过 git status 来看到具体状态是怎样。

参考:https://www.kernel.org/pub/software/scm/git/docs/git-merge.html


合并好像是取交集。

【热门文章】
【热门文章】