美文网首页web前端
git冲突解决方案

git冲突解决方案

作者: 姜治宇 | 来源:发表于2021-03-05 18:13 被阅读0次

    我们在使用git的时候,经常会遇到冲突的情况,那应该如何解决冲突呢?
    首先看一下git的原理图。


    252300399818396.png

    从这张图可以很清楚的看到本地分支和远程分支的区别,当我们进行commit操作的时候,事实上只是提交到本地的git分支上;而只有进行了push后,才是提交到远程的git分支上。
    下面以index.html文件为例,如果你跟同事张三都修改了这个文件,就有如下两种场景。

    场景1

    你在本地修改了index.html,但还没commit,这时张三喊你更新代码。
    此时你pull的话,代码无法更新下来,会有如下提示:

    error: Your local changes to 'index.html' would be overwritten by merge.  Aborting.
    Please, commit your changes or stash them before you can merge.
    
    解决方案:

    先备份本地index.html,然后可以先revert,然后再运行pull,此时代码就可以正常拉取了。
    然后再通过diff比较两份代码不一致的地方,修改后再次commit代码即可。

    场景2

    你本地修改了index.html,而且已经commit了,这时张三喊你更新代码。
    此时你push的话就会提示冲突,因为张三的版本已经先于你提交了,你们对同一个文件进行了操作,此时git就不知道究竟采用你的呢,还是张三的呢?

    1.png
    打开冲突的文件,代码里会出现<<<HEAD这样的符号,标明冲突的代码位置。
    2.png
    解决方案

    选择冲突的那个文件,鼠标右键菜单选择”Edit conficts”:


    mark.png

    如图,界面分了两栏做对比,左边是Theirs,右边是mine,我们需要选择一种合并代码的方式,合并一般分为4种情况:

    1、保留”我的修改”,舍弃”别人的修改”。

    鼠标右键点击Mine框的相应行,点击”Use this text block”。

    2、舍弃”我的修改”,保留”别人的修改”。

    鼠标右键点击Theirs框的相应行,点击”Use this text block”。

    3、同时保留”我的修改”和”别人的修改”,并将”我的修改” 放在前面。

    鼠标右键点击Mine框的相应行,点击”Use text block from mine before theirs”。

    4、同时保留”我的修改”和”别人的修改”,并将”别人的修改”放在前面。

    鼠标右键点击Mine框的相应行,点击”Use text block from theirs before mine”。
    选择完后,会在下面区域显示处理冲突后的结果。

    处理完成后,点击小乌龟菜单上的Mark as resolved选项卡;或者先保存文件,然后鼠标右键选择Resolved,此时就会标记冲突已解决,文件上的黄色感叹号会消失,系统会自动删除因冲突而新建的文件,接下来再正常进行commit和push操作就ok了。

    相关文章

      网友评论

        本文标题:git冲突解决方案

        本文链接:https://www.haomeiwen.com/subject/sgibfltx.html