zoukankan      html  css  js  c++  java
  • Git 分支管理 创建与合并分支

    分支在实际中有什么用呢?

      假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。

      如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

      现在有了分支,就不用怕了。

      你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,

      而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

    创建与合并分支

      在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。

      截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。

    >>>>HEAD严格来说不是指向提交,而是指向master,  master才是指向提交的

    >>>>所以,HEAD指向的就是当前分支

      

      一开始的时候,master分支是一条线,Gitmaster指向最新的提交

      再用HEAD指向master就能确定当前分支以及当前分支的提交点

         

       每次提交,master分支都会向前移动一步

      这样,随着你不断提交,master分支的线也越来越长:

       当我们创建新的分支,例如dev

      Git新建了一个指针叫dev,指向master相同的提交

      再把HEAD指向dev,就表示当前分支在dev上:

         

      Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!

       不过,从现在开始对工作区的修改和提交就是针对dev分支了

      比如新提交一次后dev指针往前移动一步master指针不变:

         

       

         

      假如我们在dev上的工作完成了,就可以把dev合并到master上。

       Git怎么合并呢?

        最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:Fast forward方式(该模式下合并看不出来曾经合并)(个人不推荐使用)

           

          所以Git合并分支也很快!就改改指针,工作区内容也不变!

         不使用Fast forward的方式 : 不使用Fast forward模式进行合并(个人推荐使用)

             

        合并完分支后,甚至可以删除dev分支。(最好不删除 )

      删除dev分支就是把dev指针给删掉,

      删掉后,我们就剩下了一条master分支:

           

    下面开始实战

      首先,我们创建dev分支,然后切换到dev分支:

        $ git checkout -b dev

           

       git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

          $ git branch dev
          $ git checkout dev

    --

       然后,git branch命令查看当前分支

         

      git branch命令会列出所有分支当前分支前面会标一个*

    ---

      然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:

          Creating a new branch is quick.

       然后提交:

         

         

    ----

      现在,dev分支的工作完成,我们就可以切换回master分支:

          $ git checkout master

           

           

     -----

       切换回master分支后,再查看readme.txt文件,刚才添加的内容不见了!

       因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:

         

    -----

      现在,我们dev分支的工作成果合并到master分支上: 

        (个人不推荐使用这种方式Fast forward方式 , 往下读)

        $ git merge dev

         

         

      git merge命令用于合并指定分支到当前分支

      合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

    >>>>注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,这种模式下,删除分支后,会丢掉分支信息!!!!!

      也就是直接把master指向dev的当前提交,所以合并速度非常快。

        当然,也不是每次合并都能Fast-forward

       不使用Fast forward模式进行合并(个人建议使用)

     -------

      合并完成后,就可以放心地删除dev分支(最好不删除)

          $ git branch -d dev

           

           

           

    --------

       因为创建、合并和删除分支非常快,

      所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,

      这和直接在master分支上工作效果是一样的,但过程更安全。

  • 相关阅读:
    php环境配置中各个模块在网站建设中的功能
    PHP+Apache+MySQL+phpMyAdmin在win7系统下的环境配置
    August 17th 2017 Week 33rd Thursday
    August 16th 2017 Week 33rd Wednesday
    August 15th 2017 Week 33rd Tuesday
    August 14th 2017 Week 33rd Monday
    August 13th 2017 Week 33rd Sunday
    August 12th 2017 Week 32nd Saturday
    August 11th 2017 Week 32nd Friday
    August 10th 2017 Week 32nd Thursday
  • 原文地址:https://www.cnblogs.com/mkl7/p/10849703.html
Copyright © 2011-2022 走看看