搜索

首页  >  问答  >  正文

git是怎么处理冲突的?

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

淡淡烟草味淡淡烟草味2771 天前805

全部回复(10)我来回复

  • 伊谢尔伦

    伊谢尔伦2017-05-02 09:35:30

    先回答问题:

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

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

    回复
    0
  • 漂亮男人

    漂亮男人2017-05-02 09:35:30

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

    回复
    0
  • PHPz

    PHPz2017-05-02 09:35:30

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

    回复
    0
  • 迷茫

    迷茫2017-05-02 09:35:30

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

    回复
    0
  • phpcn_u1582

    phpcn_u15822017-05-02 09:35:30

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

    回复
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-02 09:35:30

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

    回复
    0
  • 高洛峰

    高洛峰2017-05-02 09:35:30

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

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

    回复
    0
  • 習慣沉默

    習慣沉默2017-05-02 09:35:30

    小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要求你先手动修改冲突,找到提示的文件,冲突的部分就会出现《《《《《来分隔代码改变的部分,需要修改那部分,就看你怎么选了。

    回复
    0
  • 大家讲道理

    大家讲道理2017-05-02 09:35:30

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

    回复
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-02 09:35:30

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

    回复
    0
  • 取消回复