累了的时候看看这个 |
比如A和B都克隆了同一个远程仓库,然后B修改了其中的一个文件内容并提交push到远程仓库,A也修改了同一个文件也提交并要push到远程仓库,此时A的push肯定会出错,普遍的解决方法就是A先将远程仓库的最新提交pull或fetch下来,在本地解决冲突再提交推送,但这可能会导致B之前已经推送到远程仓库所做的修改在A进行合并时被修改了甚至丢弃了,有没有办法不修改并保留远程仓库中B已经推送的修改,然后也能正确的推送A的修改?
@jjboomsky 这样推送的release也会冲突。
A和B同时修改一个文件,
1. A修改了B的bug,代码有部分需要覆盖
2. A和B改了不同的功能,2份代码需要同时存在。
至于是哪种情况,肯定需要A和B协商沟通,git自己是没办法解决的。
@knightdf 其实这个也是可以实现的,叫做“保留双方的修改”,然而对于这种不能自动merge的代码段,很显然是需要手动merge的。如果要保留双方的修改(限于冲突的代码段),那大概率是要报错的。
你这是基础问题
首先。解决此问题的办法很多。但是不要强推,或者强合
git 先拉后推,永远是对的
首先,你要理解 git 是如何工作的,不要以 svn 的思维去理解 git 根本原理是不同的。一个是中心化的,一个是去中心化的
通常情况下 git 会自动合并双方的修改,当然这个前提是你们改的是不同的位置
一般,对付这种冲突最简单的办法是 先 stash,然后 stash apply,这样可以解决90%的问题
当 A 和 B 修改相同之处的时候,问题就来了。git 会问你怎么处理
遇到了剩下的问题,必须使用 merge tool 进行合并
建议使用图形化工具+ BeyondCompare 解决冲突 不是你改的部分,叫上上一次提交的人确认,或者你团队的人确认
图形化工具可以使用例如 SourceTree, GitKraken
过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号