第二章 Git版本控制工具进阶
一、Git分支管理
1.Git分支概述
在版本控制过程中,使用多条线同时推进多个任务。
2.Git分支优势
1.同时并行推进多个功能开发,提高开发效率
2.各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
3.分支操作
1)创建分支
#1.创建分支
[root@m01 ~/test/oldboy-jenkins]# git branch test
#2.创建并切换分支
[root@m1 ~/test/oldboy-jenkins]# git checkout -b test
Switched to a new branch 'test'
[root@m1 ~/test/oldboy-jenkins]# git branch -a
master
* test
2)查看分支
# 列出当前分支清单
[root@m01 ~/test/oldboy-jenkins]# git branch
* master
test
# 查看各个分支最后一个提交信息
[root@m01 ~/test/oldboy-jenkins]# git branch -v
* master fb58f4a Update kettle_job package
test f8246fa zhehsi。。。
# 查看远程分支和本地分支
[root@m01 ~/test/oldboy-jenkins]# git branch -a
* master
# 查看哪些分支已经合并入当前分支
[root@m01 ~/test/oldboy-jenkins]# git branch --merged
3)切换分支
[root@m01 ~/test/oldboy-jenkins]# git checkout test
Switched to branch 'test'
[root@m01 ~/test/oldboy-jenkins]# git branch -a
master
* test
4)打标签
# 打标签
[root@m01 ~/test/oldboy-jenkins]# git tag -a v1.1.5-stable -m "做了很多事"
[root@m01 ~/test/oldboy-jenkins]# git tag
v1.1.5-stable
# 查看标签内容
[root@m01 ~/test/oldboy-jenkins]# git show v1.1.5-stable
tag v1.1.5-stable
Tagger: jh <974089352@qq.com>
Date: Tue Dec 22 20:26:52 2020 +0800
做了很多事
5)按照分支拉取代码
# 按照分支拉取代码
[root@m01 ~/test/oldboy-jenkins]# git clone -b [分支名称] [git链接]
6)按照标签拉取代码
# 按照标签拉取代码
[root@m01 ~/test/oldboy-jenkins]# git clone [git链接]
[root@m01 ~/test/oldboy-jenkins]# git tag [tag_name]
7)合并分支
#1.第一步:切换到接受修改的分支(被合并,增加新内容)上
git checkout [被合并分支名]
[root@m1 ~/test/oldboy-jenkins]# git checkout master
Switched to branch 'master'
#2.第二步:执行 merge 命令
git merge [有新内容分支名]
[root@m1 ~/test/oldboy-jenkins]# git merge test
Already up-to-date.
如果有冲突问题:
第一步:编辑文件,删除特殊符号
第二步:把文件修改到满意的程度,保存退出
第三步:git add [文件名]
第四步:git commit -m "日志信息"
注意:此时 commit 一定不能带具体文件名
二、Git基本原理
1.哈希
哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:
1.不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
2.哈希算法确定,输入数据确定,输出数据能够保证不变
3.哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
4.哈希算法不可逆
Git 底层采用的是 SHA-1 算法。
哈希算法可以被用来验证文件。原理如下图所示:
Git 就是靠这种机制来从根本上保证数据完整性的。
三、Git保存版本机制
1.集中式版本控制工具的文件管理机制
以文件变更列表的方式存储信息。这类系统将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。
2.Git 的文件管理机制
Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改, Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的工作方式可以称之为快照流。
3.Git 文件管理机制细节
1) Git 的“提交对象”
2)提交对象及其父对象形成的链条
四、Git分支管理机制
1.分支的创建
2.分支的切换
五、Git工作流
1.概念
在项目开发过程中使用 Git 的方式
2.分类
1)集中式工作流
像 SVN 一样,集中式工作流以中央仓库作为项目所有修改的单点实体。所有修改都提交到 Master 这个分支上。这种方式与SVN 的主要区别就是开发人员有本地库。Git 很多特性并没有用到。
2)GitFlow 工作流
Gitflow 工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。
3)Forking工作流
Forking 工作流是在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的功能以达到代码审核的目的。更适合安全可靠地管理大团队的开发者,而且能接受不信任贡献者的提交。