8.Git分支-分支的创建与合并-01
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的更多相关文章
- git分支管理之创建与合并分支
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...
- GIT 分支管理:创建与合并分支、解决合并冲突
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...
- Git 基础教程 之 创建与合并分支
- 创建与合并分支-git入门教程
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...
- git创建与合并分支
创建与合并分支 在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分 支,即master分支.HEAD严格来 ...
- 9.Git分支-分支的创建与合并-02
在 8.Git分支-分支的创建与合并-01 主要通过一个例子介绍了分支的新建,以及在工作中,git分支的新建切换以及使用,这里主要介绍分支的合并.这里的例子和8.Git分支-分支的创建与合并-01 的 ...
- [廖雪峰] Git 分支管理(1):创建与合并分支(HEAD、master、dev、指针)
每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在 Git 里,这个分支叫主分支,即 master 分支.HEAD 严格来说不是指向提交,而是指向 mas ...
- git 学习笔记 --创建与合并分支
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...
- Git创建与合并分支,撤销修改
git回滚到指定版本并推送到远程分支(撤销已提交的修改,并已push) git reset --hard <commit ID号> git push -f git回滚到上一个版本并推送到远 ...
随机推荐
- rpm和yum软件管理
rpm简介 数据库管理工具,通过读取数据库,判断软件是否安装,如已安装可读取出来所有文件的所在位置等,并可以实现删除这些文件. rpm:RPM is Redhat Package Manager(递归 ...
- 抓取某东的TT购买记录分析TT购买趋势
最近学习了一些爬虫技术,想做个小项目检验下自己的学习成果,在逛某东的时候,突然给我推荐一个TT的产品,点击进去浏览一番之后就产生了抓取TT产品,然后进行数据分析,看下那个品牌的TT卖得最好. 本文通过 ...
- dynamic动态类型的扩展方法
对于一个动态类型来说,你可以认为它包含任意成员,它们都能通过编译.但到了运行时,到底是否拥有这些成员,就真相大白了.如 dynamic test = ; Console.Write(test.Name ...
- spring boot 入门之 helloworld
第一步:创建一个普通的maven项目 第二步:配置springboot基础依赖配置(即配置pom和启动类) POM配置 <project xmlns="http://maven.apa ...
- npm 模块的总结
,, , ,,,,执行工程中自身生命周期 当前 npm 工程如果定义了钩子此时会被执行(按照 install.postinstall.prepublish.prepare 的顺序). 最后一步是生 ...
- SQL 收缩日志
USE [master]ALTER DATABASE RcBalance SET RECOVERY SIMPLE WITH NO_WAITALTER DATABASE RcBalance SET RE ...
- 8080端口被System占用
System是Windows页面内存管理进程,拥有0级优先权,没有它系统无法启动 就是说,System进程是无法关闭的,所以不要尝试去强行关闭,可能引起电脑异常查看是否是IIS占用的, 进入电脑控制面 ...
- Flask消息验证与提示
一,消息提示基本语法. 1,先新建一个Flask工作空间. 2,新建后自动得到一个app.py文件,直接运行可以看到基本效果.然后引入 from flask import flash.使用这个flas ...
- 线段树模板1 [Luogu P3372]
代码+注释: #include <iostream> #include <cstdio> using namespace std; int n, q, flag, x, y, ...
- [POJ1964]City Game (悬线法)
题意 其实就是BZOJ3039 不过没权限号(粗鄙之语) 同时也是洛谷4147 就是求最大子矩阵然后*3 思路 悬线法 有个博客讲的不错https://blog.csdn.net/u012288458 ...