zoukankan      html  css  js  c++  java
  • 四、Git分支管理

    分支与HEAD

    版本回退过程中,每次提交串成的时间线,就是一个分支,即主分支,master分支。

    HEAD严格来说,指向的是master,而master指向提交。HEAD指向的就是当前分支。
    创建一个新的分支、合并分支时,Git之所以这么快,主要原因就在于,移动的只是HEAD的指向。

    创建与合并分支

    查看当前分支,显示当前分支只有master主分支
    $ git branch   #查看当前分支
    * master    #*表示当前所在的分支
    创建并切换到一个新的分支
       注意:这里的checkout和之前回退的checkout区别
    $ git checkout -b dev
    #-b参数表示:创建并切换到一个新分支 'dev'
    或者
    $ git branch <name>  #创建一个分支

    切换分支

    $ git checkout <name>

    创建+切换分支:

    $ git checkout -b <name>

    合并某分支到当前分支:需要切换到主分支,然后执行merge命令

    $ git merge <name>

    删除分支  //一般用到较少吧

    $ git branch -d <name>

    解决冲突

      实际工作中遇到冲突的可能性还是比较大的,如果主分支和其他分支,都对一行代码或者文字,进行了修改提交。那么在合并时,就是出现冲突。如下:
    提示自动合并失败,需要手动解决冲突,此时查看该文件,会有如上对比
    • <<<<<<为master分支的内容
    • >>>>>>为feature1分支的内容
    • 中间以=====进行分割
     此时分支的解决办法,就是直接打开冲突文件修改后git add 并且commit,现在分支变为如下状态:

    也可以通过如下方式查看变化轨迹

    最后,删除feature1分支

    $ git branch -d feature1 
    已删除分支 feature1(曾为 491ec71)。

    分支管理策略

    通常合并分支,Git默认使用fast forward模式,但是这种模式,删除分之后,会丢掉分支信息
    强制禁用fast forward模式,Git就会在merge时生成一个新的commit。
    $ git merge --no-ff -m "merge with no-ff" dev

    合并后,我们用git log看看分支历史:

    $ git log --graph --pretty=oneline --abbrev-commit
    *   7825a50 merge with no-ff
    |
    | * 6224937 add merge
    |/
    *   59bc1cb conflict fixed
    ...
    分支策略     干货!!!
    实际开发中,我们应该按照几个基本原则进行分支管理
    • master分支非常稳定,仅用来发布稳定版本,平时不在上面干活
    • 干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
    • 每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了
    廖总教程里有一个仁兄的回复,很有意义,截图如下:

     

     
  • 相关阅读:
    数据库作业
    5-5 数据库笔记整理
    5月4日数据库笔记整理
    数据库
    4.27内容整理
    python基础4
    python基础4
    python基础 3
    完善版二级联动(可作为函数)需要导入jquery
    jquery $this 指向子元素
  • 原文地址:https://www.cnblogs.com/kunpengv5/p/7828018.html
Copyright © 2011-2022 走看看