git 分支 创建 分支冲突与解决

git 分支创建 分支冲突与解决

  • 分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
  • 在版本控制中,使用多条分支同时推进多个任务。可以用于添加功能、测试版本、以及不停机热修复
  • 多个分支可以并行开发,相互不耽误、相互不影响,提高开发效率
  • 分支功能开发失败也能直接删除,不影响其他分支及主线

flowchart LR


    id1[(master1.1)] -- 主体版本更新 --> id2[(master1.2)]----> id3[(master1.3)]
    id1[(master1.1)] -. 新功能 .-> id21{{branch1.1.2}}-. 新功能 .-> id22{{branch1.1.3}}
    id1[(master1.1)] -. 测试版本 .-> id31>branch1.1.6]-. 测试版本 .-> id32>branch1.1.7]
    id22--合并--oid2
    id32 --合并--oid2
    id2 -.hot_fix.->id4[[branch修复版本]]--合并--oid3
  


master
branch01
branch02
分支
合并
未合并
hot_fix
合并
稳定版1.2
正式版1.2
正式版1.1
开发版1.1.2
开发版1.1.1
热修复1.2.1
项目搁浅

分支操作

分支查看创建切换

  • 首先创建b1.txtx测试文件,并提交到仓库区

     SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
     $ git add b1.txt
    
     SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
     $ git commit -m "创建b1测试文件" b1.txt
     [master 141b724] 创建b1测试文件
      1 file changed, 0 insertions(+), 0 deletions(-)
      create mode 100644 b1.txt
    
  • 查看分支git branch -v

     SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
     $ git branch -v
     * master 141b724 创建b1测试文件
    
  • 创建分支git branch [branchname]

     SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
     $ git branch branch01
    
     SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
     $ git branch -v
       branch01 141b724 创建b1测试文件
     * master   141b724 创建b1测试文件 # *号显示当前所在位置
    
  • 切换分支git checkout [branchname]

    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
    $ git checkout branch01
    Switched to branch 'branch01'
    M       gt03.txt
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (branch01)
    $ git branch -v
    * branch01 141b724 创建b1测试文件
      master   141b724 创建b1测试文件
    

分支冲突与解决

  1. 进入branch01分支后添加内容并提交

    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (branch01)
    $ git add b1.txt
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (branch01)
    $ git commit -m "b1分支修改文件" b1.txt
    [branch01 87a8a24] b1分支修改文件
     1 file changed, 1 insertion(+)
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (branch01)
    $ git branch -v
    
    * branch01 87a8a24 b1分支修改文件
      master   141b724 创建b1测试文件
     
    

master索引号未发生改变,而branch01已变更

  1. 此时切换回master分支,发现b1已经恢复为最初创建的版本,在master上对文件进行修改

    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (branch01)
    $ git add b1.txt
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (branch01)
    $ git commit -m "b1分支修改文件" b1.txt
    [branch01 87a8a24] b1分支修改文件
     1 file changed, 1 insertion(+)
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
    $ git branch -v
      branch01 87a8a24 b1分支修改文件
    * master   197cfea master修改文件
     
    
  2. 再次切换到branch01分支

    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
    $ git checkout branch01
    Switched to branch 'branch01'
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (branch01)
    $ git branch -v
    * branch01 87a8a24 b1分支修改文件
      master   197cfea master修改文件
    

    文件中的内容又改回来了

  3. git merge [branchname]分支合并,切换回master,随后合并branch01,由于在同一个文件的同一个位置修改内容,会发生冲突,这要靠人自行商议解决

    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (branch01)
    $ git checkout master
    Switched to branch 'master'
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
    $ git merge branch01
    Auto-merging b1.txt
    CONFLICT (content): Merge conflict in b1.txt
    Automatic merge failed; fix conflicts and then commit the result.
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master|MERGING)
    $ cat b1.txt
    <<<<<<< HEAD
    master增加内容
    =======
    b1分支增加内容
    >>>>>>> branch01
    

    吵完架确定好内容后再提交,冲突即可解决

    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master|MERGING)
    $ git add b1.txt
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master|MERGING)
    $ git status
    On branch master
    All conflicts fixed but you are still merging.  # 所有冲突都已解决,但您仍在合并中。
      (use "git commit" to conclude merge)  # 使用“git commit”结束合并)
    
    Changes to be committed:
            modified:   b1.txt
            
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master|MERGING)
    $ git commit -m "b1分支冲突解决"  # 此处不可加文件名
    [master d2b6b04] b1分支冲突解决
    
    SKPrimin@LAPTOP-VUQ1RT3J MINGW64 /d/JAVA_FILE/GitResp (master)
    $
    
posted @ 2021-08-01 09:34  SKPrimin  阅读(206)  评论(0编辑  收藏  举报