zoukankan      html  css  js  c++  java
  • Git学习笔记4-分支

    参考链接廖雪峰git教程:https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136

    1.分支创建

    创建本地分支:

    $ git branch testing  #创建一个分支,并命名为testing

    创建远程分支(分两步):

    $ git branch testing    #创建一个分支,并命名为testing
    $ git push origin testing  #将分支推送到远程(相当于创建一个远程分支)

    2.分支切换

    $ git switch master  #切换到testing分支,即HEAD指向testing分支(在Git2.23及以上的版本中使用)
    $ git checkout testing  

    3.分支创建及切换

    $ git switch -c dev  #创建dev分支,然后切换到dev分支(在Git2.23及以上的版本中使用)
    $ git checkout -b dev

    4.合并分支

    $ git merge dev  #合并指定的dev分支到当前分支

    5.删除分支

    删除本地分支

    $ git branch -d [branch name]  #删除分支,git branch --merged结果中的分支可以进行删除
    $ git branch -D  [branch name]  #强制删除分支,git branch --no-merged结果中的分支可以进行强制删除

    删除远程分支

    $ git push origin :temp      #删除远程分支

    6.查看

    $ git branch  #查看所有分支及当前分支
    $ git branch -v  #查看每一个分支的最后一次提交
    $ git branch --merged  #查看哪些分支已经合并到了当前分支,结果中的分支可以进行删除
    $ git branch --no-merged  #查看哪些分支未合并到当前分支,结果中的分支不能删除

    7.分支使用流程

    $ git switch -c dev  #创建并切换到新的分支dev
    $ git branch    #查看当前的分支,确定结果是dev分支
    $ git add readme.txt  #修改文件后,在dev分支上暂存文件
    $ git commit -m 'branch test'  #在dev分支提交文件
    $ git switch master  #dev分支工作完成,切换回master分支
    $ git merge dev    #把dev分支的修改合并到当前的master分支,此时master分支文件的内容和dev分支上的内容一样了
    $ git branch -d dev    #此时可以放心地删除dev分支的了
    $ git branch    #删除后确认,dev分支不在了

     8.遇到冲突时的分支合并流程

    $ git switch -c dev  #创建并切换到新的分支dev
    $ git branch    #查看当前的分支,确定结果是dev分支

    ¥ 修改readme.txt文件

    $ git add readme.txt  #修改文件后,在dev分支上暂存文件
    $ git commit -m 'branch test'  #在dev分支提交文件
    $ git switch master  #dev分支工作完成,切换回master分支

    ¥ 修改readme.txt文件

    $ git add readme.txt  #修改文件后,在master分支上暂存文件
    $ git commit -m 'master branch test'  #在master分支提交文件
    $ git merge dev    #把dev分支的修改合并到当前的master分支,此时master分支文件的内容和dev分支上的内容一样了

    此时,GIt无法执行“快速合并”,必须手动解决冲突后再提交:

     $ git status  #查看产生冲突的文件:

     

     此时在本地打开产生冲突的文件:

     

     手动删除两个内容中的一个(包括<<<<<<和======标记)

    $ git add readme.txt  #修改文件后,在master分支上暂存文件
    $ git commit -m 'conflict fixedt'  #在master分支提交文件
    $ git branch -d dev    #删除dev分支

    工作完成。

    9.BUG分支流程

    a.  保存现场

    $ git stash

    b.恢复现场

    $ git stash apply stash@{0}  #恢复stash@{0}现场
    $ git stash drop stash@{0}  #删除stash@{0}现场
    
    $ git stash pop stash@{0}  #恢复的同时也删除stash@{0}现场

    c. bug分支流程

      在软件开发中,你正在dev分支中工作。突然接到一个修复代号101bug的任务时,你会很自然的从master分支创建一个分支Bug-101来修复他。但是dev分支上的工作只进行到了一半,还没法提交,此时你可以使用git stash指令存储当前工作现场,等以后恢复现场后在dev分支上继续工作。

    当master分支上修复了bug后,因为dev分支是早期从master分支分出来的,所以,这个bug在当前dev分支上也存在。我们可以使用git cherry-pick <commit>把git commit提交所做的修改“复制”到dev分支。

    $ git ***   #你现在在dev分支上工作
    $ git stash  #保存现场
    $ git switch master  #切换到主分支
    $ git switch -c Bug-101  #创建Bug-101分支,并切换

    ¥101Bug 修复工作

    $ git add readme.txt
    $ git commit -m "fix bug-101"  #提交修复的文件,修复工作完成

    $ git switch master  #切换到主分区
    $ git merge --no-ff -m "merge bug fix 101"  #合并bug-101分支到master分支
    $ git branch -d Bug-101  #删除Bug-101分支
    $ git switch dev  #切换到修复101bug之前的工作分支
    $ git stash list  #查看保存的工作现场信息
    $ git stash pop  #恢复现场,并删除保存的现场内容

      在master分支上修复了bug后,我们要想一想,dev分支是早期从master分支分出来的,所以,这个bug其实在当前dev分支上也存在。我们只需要把6560f7c fix bug 101这个git commit提交所做的修改“复制”到dev分支。

    $ git cherry-pick 6560f7c  #将master分支指定的git commit提交复制到当前的dev分支

    10.分支策略

      在实际开发中,我们应该按照几个基本原则进行分支管理:

      首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。所以,团队合作的分支看起来就像这样:

  • 相关阅读:
    ActionBar Fragment的一个sample activity; 及获取runningAppProcess及跳转
    优化后台推送的service,减少被杀死的几率
    64位win7安装ubunto最新14.04的过程,及出现的问题的解决
    一次非线上iowait高的情况的检查
    一个愚蠢的python逻辑语法错误
    Bellman-Ford算法解决单源最短路问题
    Floyd算法解决多源最短路径问题
    最短路问题Dijkstra算法
    最小生成树之Kruskal算法
    最优二叉搜索树
  • 原文地址:https://www.cnblogs.com/Mike2019/p/11942450.html
Copyright © 2011-2022 走看看