android - git merge合并
PHPz
PHPz 2017-04-17 11:43:50
[Android讨论组]

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

git checkout A
git merge B

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

PHPz
PHPz

学习是最好的投资!

全部回复(4)
伊谢尔伦

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

比如这样的分支结构:

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

然后执行:

git checkout master
git merge topic

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

  • 首先找到它们共同的 commit E
  • 开始在 master 分支上从 A 到 C 重放所有修改

如果 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

迷茫

合并好像是取交集。

迷茫

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

怪我咯

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号