• Git使用详细教程(8):Git分支


    创建分支

    当我们使用git init projectName命令的时候,Git就会默认帮我们创建一个分支,名字叫做master。

    我们还可以创建其它分支,使用git branch new_branch(新分支名称)

    如果我们想在创建新分支的同时,并切换到新建的分支,需要加上额外的参数-b,使用git checkout -b new_branch(新分支名称),它等同于下面的两条命令

    git branch new_branch
    git checkout new_branch
    

    查看分支

    可以通过如下命令查看当前所处分支

    git branch
    

    切换分支

    当我们从一个分支切换到另一个分支,可以使用如下命令

    git checkout another_branch(另一个分支)
    

    例如,从master切换到dev分支

    删除分支

    删除分支命令

    git branch -d de_branch(待删除分支名)
    git branch -D de_branch(待删除分支名)
    

    -d-D有啥区别呢,如果你想删除的分支的内容已经合并到主分支了,那么使用-d即可,如果你在新分支上写了东西,但是并没有合并到主分支,你还想把它删除,你就得使用-D,Git这样做是为了保险起见,怕你忘了合并就删除了,但是如果你确实是想还没合并就删除了就可以使用-D

    下图中,我再bug567分支做了一次提交操作,但是并没有合并到其它分支,在使用git branch -d bug567时,提示dev分支并没有合并,如果确实想删除它,可以使用git branch -D bug567

    注意,我们不能删除我们当前所处的分支,什么意思呢?如果我们当前处于dev分支,我们通过git branch -d dev是无法删除dev分支的,需要先切换到其它分支,再去删除这个dev分支,因为如果你当前处于dev分支,你还把它给删除了,那么你当前该处于什么分支呢?这是不合理的,所以Git也不允许

    分支合并

    当我们在一个分支上写好代码后需要把代码合并到主分支,这里需要用到git merge命令,下图给出了示例,dev分支里index.txt有两行文字,而master分支index.txt里只有一行,这里吧dev分支的内容和master分支的内容合并,先切换到master分支,然后执行如下面命令

    git merge dev
    

    git branch -v

    显示当前所处分支,最新的一条提交消息

    探寻分支本质

    分支

    下图是一个分支上由commit id组成的记录线

    HEAD保存在哪里呢?

    上面图中的这种也叫做fast-forward,快进,这是在没有冲突的情况下,从某一个提交直接跳转到最新的一个提交上。

    如果有冲突的话,我们需要在主分支把冲突解决,然后再commit。此时如果我们切换到dev分支,再执行git merge master时,也不会冲突了,而是fast-forward,此时我们再查看dev分支最新的commit id会发现和刚刚在主分支最新的commit id一样,dev分支只是采用了fast-forward方式更新了commit id,道理很简单,因为在master我们解决冲突后做了提交, master已经往前走了一步了,然后我们把往前走了一步的master再往回合并的话,此时实际上dev分支已经落后于master,git会认为这是一个快进,所以直接有指向dev的指针直接指向下一个master所指向的最新commit,直接就跳过去了。

    下图这种方式,即使没有冲突,也会产生一个新的commmit id

  • 相关阅读:
    Spring(八)-spring5框架新功能
    Spring(七)-事务操作
    Spring(五)-AOP
    Linux errno错误码
    思考:如何保证服务稳定性?
    CPU性能分析工具原理
    Oracle数据库url格式
    java对象的四种引用:强引用、软引用、弱引用和虚引用
    给老板汇报技术规划的要点
    后端程序员必备:分布式事务基础篇
  • 原文地址:https://www.cnblogs.com/itbsl/p/10661371.html
Copyright © 2020-2023  润新知