1.新建分支

   git checkout -b <branch-name>  创建一个分支并且切换到这个分支。

   git checkout -b <branch-name> = git branch <branch-name> + git checkout <branch-name> 

例子:1.假设你现在在开发一个项目,而且已经有了一些提交。如下图所示。

  2.这时候,有客户报了一个defect需要你修复,代号是#53,这时候你可以使用 git checkout -b <branch-name> 创建一个iss53的分支去解决这个defect。 创建成功之后,分支情况如下图所示。

  3.经过一段时间的奋力开发,你终于提交了一些代码去解决这个defect。iss53分支随着你的提交而向前移动。 提交之后的分支情况如下图所示。

  4.这时候,又有一个非常紧急的bug需要你去修复,其优先级高于iss53。你应该怎么做?在Git中你不需要将你针对iss53的代码的修改进行还原。你需要做的仅仅只是切换回master分支是上,并且创建一个分支去fix这个bug,然后在hotfix分支上去fix这个紧急的bug。执行 git checkout master  git checkout -b hotfix 两条命令。

  注意:由于git checkout master会将你的工作区域恢复成master分支上最后一次提交时候的样子,所以你需要确保你的暂存区和工作区中所有针对iss53的修改都已经被commit了,否则Git会阻止你直接切换到master分支。

  当你创建了hotfix分支,并且有了一定的提交之后的分支情况如下图所示。

  5.当hotfix分支的开发完成之后,你可以进行相关的测试,测试通过之后,然后可以使用将其合并到master分支上,部署到线上。

   $ git checkout master

   $ git merge hotfix

  注意:git merge的含义是将hotfix分支的内容合并进master分支,也就是说使master分支能够引用到hotfix分支的代码,观察上图可以发现,Git只需要将master指针向前(右)移动就可以了。这种情况的合并在Git中被称为快进(fast-forward),因为只是移动了指针。

  合并完成之后,分支情况如下图所示:

  需要紧急修复的bug已经被修复了,我们创建的hotfix分支,这时候就可以被删除了。

  使用 $ git branch -d hotfix 删除一个分支。

  6.这时候,你可以切换回iss53分支,进行以前还没有完成的工作。

  使用 git checkout iss53  ,然后你就可以继续去解决#53这个defect了。

  注意:你关于hotfix的代码并没有包含在iss53中,你可以等待iss53开发完成之后,直接将iss53合并到master中;或者将master中的代码合并到iss53中之后在进行开发。

8.Git分支-分支的创建与合并-01的更多相关文章

  1. git分支管理之创建与合并分支

    在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...

  2. GIT 分支管理:创建与合并分支、解决合并冲突

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  3. Git 基础教程 之 创建与合并分支

  4. 创建与合并分支-git入门教程

    在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...

  5. git创建与合并分支

    创建与合并分支 在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分 支,即master分支.HEAD严格来 ...

  6. 9.Git分支-分支的创建与合并-02

    在 8.Git分支-分支的创建与合并-01 主要通过一个例子介绍了分支的新建,以及在工作中,git分支的新建切换以及使用,这里主要介绍分支的合并.这里的例子和8.Git分支-分支的创建与合并-01 的 ...

  7. [廖雪峰] Git 分支管理(1):创建与合并分支(HEAD、master、dev、指针)

    每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在 Git 里,这个分支叫主分支,即 master 分支.HEAD 严格来说不是指向提交,而是指向 mas ...

  8. git 学习笔记 --创建与合并分支

    在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...

  9. Git创建与合并分支,撤销修改

    git回滚到指定版本并推送到远程分支(撤销已提交的修改,并已push) git reset --hard <commit ID号> git push -f git回滚到上一个版本并推送到远 ...

随机推荐

  1. 理解go的闭包

    package main import ( "fmt" ) func test(a int) { a++ fmt.Println(a) } func test2() func() ...

  2. get_k_data 接口文档 全新的免费行情数据接口

    get_k_data 接口文档 全新的免费行情数据接口 原创: Jimmy 挖地兔 2016-11-06 前言在tushareAPI里,曾经被用户喜欢和作为典范使用的API get_hist_data ...

  3. 部署Mvc Core SSL网站到Centos并用Nginx作为反向代理

    1. 先在本地比如~/Downloads下建立MVC项目 2. 生成mvc使用的ssl证书
 2.1. 生成.key文件
 openssl genrsa -des3 -out server.key 2 ...

  4. Selenium之Selenium IDE

    官方文档:https://www.seleniumhq.org/docs/02_selenium_ide.jsp 1.       Selenium IDE介绍 Selenium IED (Integ ...

  5. Linux-网络综合实验

    题目要求:财务部门有俩台机器acc-1和acc-2,it部门有俩台机器it-2和it-2,要求acc机器互通,it机器互通,财务部和it部机器通过路由器互通

  6. Pytorch: cuda runtime error (59) : device-side assert triggered at /pytorch/aten/src/THC/generic/THCTensorMa

    更换了数据集, 在计算交叉熵损失时出现错误 : cuda runtime error (59) : device-side assert triggered at /pytorch/aten/src/ ...

  7. PHP 关于判断输入日期是否合法

    合法要求 一年仅十二个月 4,6,9,11月仅30天,1,3,5,7,8,10,12月仅31天 闰年2月29天,否则28天 输入的变量年,月,日为数字 代码: <?php //PHP中判断输入的 ...

  8. Spiring系列__03IOC补充

    这篇文章是对前一篇的一些补充: 1.SpringIOC容器可以管理Bean的声明周期: 通过构造器或工厂方法创建bean的实例: 为bean属性设置值或者引入其他bean: 调用bean的初始化方法, ...

  9. [Ubuntu]pkg-config和ldconfig

    转载自->这里 我们知道,linux编译源码包基本步骤无非是:configure,make,make install三部曲:configure过程中可能会遇到无法找到某些头文件和动态库:原因有两 ...

  10. delphi 鼠标拖动

    GetWindowRect(tgph, Rect); //获得窗体大小 setcursorpos(Rect.Left + 487, Rect.Top + 274); delay(100); mouse ...