Git初学札记(五)————Branch分支管理
引言
正如之前的博客中提到的,Git区别于Svn的一个最明显的功能就是分支管理功能。
那么什么是分支?分支又能为我们的开发带来什么翻天覆地的变化呢?(为了使博客的内容更具权威性和专业性,以下部分内容摘自官方文档《Git - 分支简介》)。
什么是分支
分支,顾名思义,从主干分离的枝干。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
分支并不是Git特有的功能特性,但是相比于其他的版本控制系统,Git处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。与许多其他版本控制系统不同,Git鼓励在工作流程中频繁地使用分支与合并(branch 和 merge)。
理解和精通这一特性,我们便会意识到Git是如此的强大而又独特,并且从此真正改变我们的开发方式。
创建分支
创建分支的命令是git branch :
$ git branch testing
根据Git的工作原理(在此不做讨论,可以参见《起步 - Git基础》),上面这行命令会在当前所在的提交对象上创建一个指针。
此时,两个指向相同提交历史的分支,而Git又是如何知道当前在哪一个分支上呢?其实,Git中还存在一个名为HEAD的特殊指针。在Git中,HEAD指向当前所在的本地分支(将HEAD想象为当前分支的别名)。$ git branch命令仅仅会创建一个新分支,并不会自动切换到新分支中去。
可以使用$ git log 命令查看各个分支当前所指对象。
$ git log --oneline --decorate
f30ab (HEAD, master, testing) add feature #32 - ability to add new
34ac2 fixed bug #1328 - stack overflow under certain conditions
98ca9 initial commit of my project
可以看到,当前master和testing分支都指向校验和以 f30ab 开头的提交对象。
切换分支
更换到一个已经存在的分支,需要使用$ git checkout 命令。
$ git checkout testing
可以再次进行开发,并提交:
$ vim test.rb
$ git commit -a -m 'made a change'
执行完提交后,HEAD分支就会随着提交操作自动向前移动,如上图所示,testing 分支向前移动了,但是master分支却没有,它仍然指向运行 git checkout 时所指向的对象。
我们再次切换回 master 分支上:
$ git checkout master
checkout 时HEAD随之移动,这条命令完成了两件事:第一是将HEAD指向 master 分支,第二是将工作目录恢复成master 分支所指向的快照内容。也就是说,你现在做修改的话,项目将始于一个较旧的版本。本质上来讲,这就是忽略 testing 分支所做的修改,以便向另一个方向进行开发。
此时,如果我们不进行分支合并(merge操作),而是朝着另一个方向进行了修改,那么我们就会出现如下图所示的分支结构:
可以看到,项目的提交历史已经产生了分叉。因为刚才我们创建了一个新分支,并切换过去进行了一些工作,随后又切换回 master 分支进行了另外一些工作,上述两次改动针对的是不同的分支:你可以在不同分支间不断地来回切换和工作,并在时机成熟时将他们合并起来。
项目分叉历史
使用 $ git log命令查看分叉历史。它会输出你的提交历史、各个分支的指向以及项目的分支分叉情况:
$ git log --oneline --decorate --graph --all
* c2b9e (HEAD, master) made other changes
| * 87ab2 (testing) made a change
|/
* f30ab add feature #32 - ability to add new formats to the
* 34ac2 fixed bug #1328 - stack overflow under certain conditions
* 98ca9 initial commit of my project
Git的分支实质上仅包含所指对象校验和(长度为40的SHA-1 值字符串)的文件,所以它的创建和销毁都异常高效。因为创建一个新分支就相当于往一个文件中写入1个换行符和40个字符,因此十分迅速。
综上,就是Git的分支管理相关的概念和模型,如有疑问欢迎文末留言。
参考:
《Git - 分支简介》
Git初学札记(五)————Branch分支管理相关推荐
- Git初学札记(七)————合并分支(merge)
目录 引言 开始Merge 1.History视图 2.Team菜单 3.Git Repositories视图 巧用Git Staging视图 放弃Merging 可能的Merge结果 引言 Git鼓 ...
- Git笔记(13) 分支管理
Git笔记(13) 分支管理 1. 分支管理工具 2. 查看分支列表 3. 查看分支最后一次提交 3. 查看已合并分支列表 4. 查看未合并分支列表 1. 分支管理工具 在 Git学习笔记(12) 分 ...
- Git三大特色之Branch(分支)
转自: https://blog.csdn.net/qq_32452623/article/details/78355976 我习惯每篇博客都有个开篇 还记得 Git 系列第一篇 Git 自我介绍的话 ...
- git学习(三)分支管理
分支管理 git学习参考 廖雪峰官方网站 git基本操作,一篇文章就够了! 一.分支作用 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交 ...
- Git之深入解析Git的杀手级特性·分支管理与分支变基的开发工作流以及远程分支的跟踪
一.Git 分支简介 几乎所有的版本控制系统都以某种形式支持分支,使用分支意味着可以把工作从开发主线上分离开来,以免影响开发主线.在很多版本控制系统中,这是一个略微低效的过程,常常需要完全创建一个源代 ...
- Git本地库版本控制和分支管理
版本控制 ①git log [parameter] 查看版本记录(使用Hash值指向相关信息,只显示之前的版本) 常用参数: –pretty = oneline (或 --oneline,缩短Hash ...
- Git学习05 --分支管理02
1.冲突 产生冲突后,查看readme.txt 可以看到冲突内容 <<<<<<< ======= >>>>>>> ...
- Git配置、版本控制与分支管理
文章目录 一.创建版本库 1. 配置git环境 二.时光机穿梭 1. 版本回退 2. 撤销修改 3. 删除文件 三.分支管理 1. 创建与合并分支 2. 解决冲突 3. Bug分支 4. 多人协作 参 ...
- 史上最简单的git教程|第九篇:分支管理工具
在上一篇我们讲到了如何创建合并分支.如何解决冲突以及如何删除分支,那么接下来我们将讲到一些常用的分支管理工具. 获取所有分支列表: $ git branch * b1master 可以看书一共有两个分 ...
最新文章
- 字体在ppt中可以整体替换吗_干货,做PPT时这样选择字体,瞬间提升幻灯片档次,看完你就懂了...
- 坚果pro2s7.0.1系统更新截图(订阅号长截图测试)PhotoScape图片编辑器应用
- 【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器
- 准备刺第一针了(飞秋官方下载)
- word 2007如何插入参考文献引用
- Python vim 环境搭建
- java拦截器_Java拦截器实现
- .config文件相关说明
- 微信小程序开发图片太多怎么办
- 从阿里一面谈面试需要准备什么
- checksum命令 linux_Linux命令大全完整版
- 数理逻辑习题集(3)
- 矩阵分析之 实矩阵分解(4)满秩分解,QR分解
- 怎么转换书法字体?教你快速转换毛笔字体
- 顶部BANNER广告图片放大后再自动缩小消失
- html表头解释_1分钟内解释的html
- 取得高等学校教师资格证应当具备什么学历要求
- html canvas粒子线条组合动画背景特效
- 一步一步安装 Microsoft .NET Pet Shop 4.0
- 通过Uip WebClient 实现中应用DNS解析
热门文章
- stl min函数_std :: min_element()函数以及C ++ STL中的示例
- Java中的一些坑,汇总篇(2万字)
- 别在Java代码里乱打日志了,这才是正确的打日志姿势!
- 关于C#监视剪贴板信息
- Windows巡检IIS指标脚本(PowerShell实现)
- python爬取新闻网站标题_python如何正确抓取网页标题
- C++PrimerPlus学习——第十三章编程练习
- 计算机专业410分能上哪些大学,2021年高考410分能报什么学校
- linux ptrace 读内存,Linux高级调试与优化——ptrace
- java web后台_java web 后台那些事