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. css选择器+、~、>

    在css中,选择器是一种模式,用于选择需要添加样式的元素.它有多种选择器,我们看一下比较常见,但容易混淆的三个选择器+.~.> A + B(相邻兄弟选择器) 定义:css2. 匹配B元素,满足条 ...

  2. CAShapLayer的使用1

    1.添加橙色圆环 - (CAShapeLayer *)shapeLayer { if (!_shapeLayer) { _shapeLayer = [CAShapeLayer layer]; CGRe ...

  3. CyclicBarrier介绍

    应用场景 在某种需求中,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择CyclicBarrier了. 实例分析 我们需要统计全国的 ...

  4. Docker 学习3 Docker镜像管理基础

    一.docker 常用操作及原理 1.docker 常用操作 2.docker 机制 1.docker client端是通过http或者https与server端通信的.个 2.docker 镜像可以 ...

  5. windows jdk安装

    先去官网下载安装包 x86 32位 x64 64位 下载地址 安装jdk 安装目录默认c盘 配置系统环境 JAVA_HOME环境变量.作用:它指向jdk的安装目录,Eclipse/NetBeans/T ...

  6. Vue项目预渲染机制引入实践

    周末想顺便把已经做好静态页面的webApp项目做一下SEO优化,由于不想写蹩脚的SSR代码,所以准备采用预渲染,本来想着网上有这么多预渲染的文章,随便找个来跟着做不就完了嘛,结果年轻的我付出了整个周末 ...

  7. 怎样使用C# MD5加密来增强密码的安全度

    一.前言 MD5说明http://zh.wikipedia.org/wiki/MD5 .NET MD5类 官方文档&示例http://msdn.microsoft.com/zh-cn/libr ...

  8. HBASE强制删除表

    1,先把hdfs的对应表的数据删除 hadoop fs -mv /hbase/<table_name> /tmp 2,修复meta信息 hbase hbck -fixMeta -fixAs ...

  9. TCP 三次握手、四次挥手

    三次握手:(主要是server.client相互同步系列号) SYN:同步序列号 ACK:确认序列号 第一次握手:client 向server 发送SYN,seq=x,申请同步client端序列号,c ...

  10. 详解Session和cookie

    1.cookie 1.1. 为什么会有cookie? 由于HTTP是无状态的,服务端并不记得你之前的状态.这种设计是为了HTTP协议的方便,但是也存在一些问题.比如我们登录一个购物网站,我们需要用户登 ...