首页 > git是怎么处理冲突的?

git是怎么处理冲突的?

刚开始学习git,有个疑问.
小A和小B都从远程git clone了最新的版本。
两个人都在本地对代码进行了修改。
小A先提交了代码。
这时小B再提交代码,会发生什么事情呢?
是会覆盖小A提交的代码还是不让提交呢?


小B在提交代码时应先git pull更新代码,如果代码有冲突就会出现类似这样的错误:

error: Your local changes to the following files would be overwritten by merge:
****/****/**.php
Please, commit your changes or stash them before you can merge.

这时候git要求你先手动修改冲突,找到提示的文件,冲突的部分就会出现《《《《《来分隔代码改变的部分,需要修改那部分,就看你怎么选了。


如果是改的不同地方 可以直接merge 如果改了相同的地方 git会自动把两个版本的代码放到文件里面 等你选


每次开发完成后 先add commit 然后pull远程代码 有冲突的话尽快解决 然后再push 当然我说的是不考虑分支的情况下


先回答问题:

小A先提交了代码,远程库和小A得本地库同步,假设为 0 -> a
此时小B的本地库为 0 -> b,远程库的版本比本地库较新,git会拒绝推送并报错。

git 会要求 git pull 更新本地库,而 pull 操作相当于自动的 fetch 和 merge 操作,会试图自动将远程库合并入本地库,在有冲突时再要求手动合并。


如果你的代码修改部分少,你可以copy一份他的粘进去。


小B先吧小A的代码 pull 回来,然后合并,然后才能再提交。


看标题我就醉了,既然是冲突,那肯定是要手动解决的。

工具判断不了如何合并代码,才会冲突。如果Git自己能解决冲突了,那就不需要人来写代码了。


有个习惯,我觉得听不错的,就是每次提交代码的时候,你要先pull 再push 这样很大程度上会避免报错,至于解决冲突,这是代码的问题,报错后文件会显示红色,有个分割线,上面的是人家的代码,下面的是你自己的代码,根据需要取舍。


git不会自己解决冲突,只会试着去合并patch,如果git发现两个patch修改了相同内容就会主动使用<<<<<< >>>>>>>>来显示冲突,然后在认为解决。


会提示小B先pull 代码,如果小B修改的代码那一行跟小A的一样,那个文件那一行会提示冲突,这里需要手动合并,如果修改的不一样,Git会自动合并相关代码

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