zoukankan      html  css  js  c++  java
  • Git解决冲突

    冲突的清情况,发生在两个分支中,都对同一个文件做了修改并提交了,那么在合并的时候,就会出现冲突的情况,下面我们模仿冲入的产生过程,并看看如何处理。
     
    当前版本库的情况:
    [root@VM-75-64 test]# ll
    total 8
    -rw-r--r-- 1 root root 78 May 15 16:59 readme.md
    -rw-r--r-- 1 root root  7 May 15 11:41 test.txt
    [root@VM-75-64 test]# cat readme.md
    Git test
    Create a new branch is quick
    Create a new branch is quick and simple
     
    我们创建分支:
     
    [root@VM-75-64 test]# git checkout -b Tokyo                #创建Tokyo分支
    Switched to a new branch 'Tokyo'
    [root@VM-75-64 test]# ll
    total 8
    -rw-r--r-- 1 root root 78 May 15 16:59 readme.md
    -rw-r--r-- 1 root root  7 May 15 11:41 test.txt
    [root@VM-75-64 test]# cat readme.md
    Git test
    Create a new branch is quick
    Create a new branch is quick and simple
    [root@VM-75-64 test]# vim readme.md
    Git test
    Create a new branch is quick
    Create a new branch is quick and simple
    Tokyo deploy                                #添加了一行代码
    [root@VM-75-64 test]# git add readme.md
    [root@VM-75-64 test]# git commit -m 'branch deploy'        #提交修改
    [Tokyo 3e1511e] branch deploy
    1 files changed, 1 insertions(+), 0 deletions(-)
     
    现在切回master分支:
    [root@VM-75-64 test]# git checkout master
    Switched to branch 'master'
    Your branch is ahead of 'origin/master' by 7 commits.
    [root@VM-75-64 test]# ll
    total 8
    -rw-r--r-- 1 root root 78 May 15 17:01 readme.md
    -rw-r--r-- 1 root root  7 May 15 11:41 test.txt
    [root@VM-75-64 test]# cat readme.md                #这里看到master得知的readme还是老样子
    Git test
    Create a new branch is quick
    Create a new branch is quick and simple
    [root@VM-75-64 test]# vim readme.md
    Git test
    Create a new branch is quick
    Create a new branch is quick and simple
    Master deploy                                    #这里我们也添加了一行代码
    [root@VM-75-64 test]# git add readme.md
    [root@VM-75-64 test]# git commit -m 'master deploy'    #提交成功
    [master c3ab705] master deploy
    1 files changed, 1 insertions(+), 0 deletions(-)
     
    此时的场景是,master主分支和Tokyo分支都对readme做了修改并提交,那么在合并代码的过程中,就没法使用快速合并,只能试图把各自的修改合并起来,而且会提示你存在冲突,我们看下:
     
    [root@VM-75-64 test]# git merge Tokyo
    Auto-merging readme.md
    CONFLICT (content): Merge conflict in readme.md                    #报错,存在冲突,而且把冲突文件也告诉你了
    Automatic merge failed; fix conflicts and then commit the result.
     
    我们查看下readme文件:
     
    [root@VM-75-64 test]# cat readme.md
    Git test
    Create a new branch is quick
    Create a new branch is quick and simple
    <<<<<<< HEAD                                #HEAD表示当前,也即是master的修改情况
    Master deploy
    =======                                    #分割线
    Tokyo deploy
    >>>>>>> Tokyo                                #分割线以下,Tokyo以上都是Tokyo分支的修改。
     
    好的,此时的readme已经把两个分支的修改情况在文件里描述了出来,就需要人为去编辑一款,既能包含master又能包含Tokyo功能代码的新文件了:
     
    [root@VM-75-64 test]# cat readme.md
    Git test
    Create a new branch is quick
    Create a new branch is quick and simple
    Ok let us deploy it together                #把原来的标注修改为当前的字段,当然这里只是模拟,真实环境下可不是这么简单的
    [root@VM-75-64 test]# git add readme.md
    [root@VM-75-64 test]# git commit -m 'final version'
    [master 5210a22] final version
    [root@VM-75-64 test]# git status
    # On branch master
    # Your branch is ahead of 'origin/master' by 10 commits.
    #
    nothing to commit (working directory clean)
     
    重新add
    重新提交
    那么此时的master就是最新版本的代码了!同时之前的冲突也就解决了!
    通过git log 我们可以大致看到代码合并的过程:
    [root@VM-75-64 test]# git log --graph --pretty=oneline --abbrev-commit
    *   5210a22 final version
    |  
    | * 3e1511e branch deploy
    * | c3ab705 master deploy
    |/  
     
    代码合并完之后,我们大可删除Tokyo分支了!
    [root@VM-75-64 test]# git branch
      Tokyo
      feature1
    * master
    [root@VM-75-64 test]# git branch -d Tokyo
    Deleted branch Tokyo (was 3e1511e).
    [root@VM-75-64 test]# git branch -d feature1
    Deleted branch feature1 (was d131953).
    [root@VM-75-64 test]# git branch
    * master
     
    这就只剩下master主分支了!
     
    总结:
    当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
    解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。
    git log --graph命令可以看到分支合并图。
     
     以上,共勉!
  • 相关阅读:
    oracle常用命令(比较常见好用)
    vim编辑器详解
    对话框和打印控件
    winform弹出唯一的窗体
    ListView
    菜单栏和布局
    窗体属性和公共控件
    ASPCMS和WPF
    MVC
    正则表达式
  • 原文地址:https://www.cnblogs.com/storyawine/p/13408435.html
Copyright © 2011-2022 走看看