zoukankan      html  css  js  c++  java
  • Git速成学习第三课:创建与合并分支

    本来第三课想记录一下远程仓库的创建与克隆0.0但是想了想还是不写了。

    这里写一下分支管理中的创建与合并。

    Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng.com/

    首先在版本提交的过程中,每一次提交,Git都会将他们传承一条时间线,这个时间线就是一个分支。

    截止目前,我们只有一条时间线,在Git中,这个分支就叫做主分支master。HEAD严格意义来讲不是

    指提交,而是指向master,master才是指向提交的。所以,HEAD指向的就是当前的分支。

    一开始的时候,master分支就是一条线,Git用master指向最新的提交,再用HEAD指向master,就可以

    确定当前的分支,以及当前分支的提交点:

     每一次提交,master分支就会向前移动一步,这样,随着你不断提交,master分支的线越来越长。

    当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master形同的提交,再把HEAD指向dev

    就表示当前的分支在dev上:

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

    但是从现在开始,对工作区的修改和提交就是针对dev分支了。比如新提交一次后,dev指针往前移动一步

    而master不变:

    假如我们在dev上的工作完成了,就可以把dev合并到master上。合并的方法也十分简单,就是将master指向dev的

    当前提交,就完成了合并:

     

    所以Git合并分支也很快!只需要修改指针,工作区内容也不变。

    合并完成后,我们甚至可以删除dev分支。删除的分支就是把dev指针给删除掉,删掉后只剩下master分支:

    Let's do it!

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

    $ git checkout -b dev
    Switched to a new branch 'dev'

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

    $ git branch dev
    $ git checkout dev
    Switched to branch 'dev'

    然后用git branch命令查看自己当前的分支:

    $ git branch
    * dev
      master

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

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

    添加一行文本“Creating a new branch is quick”

    然后提交:

    $ git add readme.txt 
    $ git commit -m "branch test"
    [dev b17d20e] branch test
     1 file changed, 1 insertion(+)

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

    $ git checkout master
    Switched to branch 'master'

    切换回master后,在查看一个文件readme.txt。刚才添加的内容不见了。因为刚才的提交在dev的分支上,

    而master分支此刻的提交点并没有改变。如图所示:

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

    $ git merge dev
    Updating d46f35e..b17d20e
    Fast-forward
     readme.txt | 1 +
     1 file changed, 1 insertion(+)

    git merge命令用于合并指定分支到当前分支。合并后在查看readme.txt的内容,就可以看到,和dev分支的最新内容是完全一样的。

    注意上面的Fast -forward信息,Git告诉我们 ,这次的合并是“快进合并”,也就是直接把master指向dev的当前提交,所以合并的速度非常快。

    当然也不是每一次的提交都能Fast -forward,后面将会学习到其他的合并方式。

    那么合并完后,就可以放心的删除dev分支了:

    $ git branch -d dev
    Deleted branch dev (was b17d20e)

    删除后,查看branch,就只剩master分支了:

    $ git branch
    * master

    因为创建合并还有删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删除分支,这就和

    直接在master上面工作的效果是一样的,但过程更加安全。

    switch

    我们注意到切换分支使用git checkout <branch>,而前面讲过的撤销修改则是git checkout -- <file>

    同一个命令,有两种作用,确实有些让人迷惑。

    实际上,切换分支的这个动作,用switch更加科学。因此最新的git版本提供git switch命令来切换分支:

    $ git switch -c dev

    直接切换到已有的master分支,可以使用:

    $ git switch master

    使用新的git switch命令,比git checkout要更容易理解。

    Summary

    Git鼓励大量使用分支:

    查看分支  git branch

    创建分支  git branch <name>

    切换分支  git checkout <name> or git switch <name>

    创建+切换分支  git checkout -b <name> or git switch -c <name>

    合并某分支到当前分支  git merge <name>

    删除分支  git branch -d <name>

  • 相关阅读:
    Java文件的 In 与 Out 的相对性
    EBS 生产环境并发管理器重启步骤详解经验啊
    HDOJ1285 确定比赛名次(拓扑排序)
    对线性回归、逻辑回归、各种回归的概念学习
    一个截屏工具制作的全过程记录——如何使用“拿来主义”
    免费的响应式bootstrap管理员后台界面主题 Charisma
    挖掘管理价值:企业软件项目管理实战
    浏览器自动填充表单导致网页样式丢失
    「译」开发者如何提升和推销自己
    xcopy的一次误用及解决办法
  • 原文地址:https://www.cnblogs.com/baobaotql/p/11822975.html
Copyright © 2011-2022 走看看