字节跳动 Git 的正确使用姿势与最佳实践

版本控制Git 黑马&尚硅谷

Git的前世今生

方向介绍

字节跳动 Git 的正确使用姿势与最佳实践_第1张图片

为什么要学习Git

字节跳动 Git 的正确使用姿势与最佳实践_第2张图片

字节跳动 Git 的正确使用姿势与最佳实践_第3张图片

1.0 Git是什么

1.1 版本控制

字节跳动 Git 的正确使用姿势与最佳实践_第4张图片

字节跳动 Git 的正确使用姿势与最佳实践_第5张图片

1.1.1 本地版本控制

字节跳动 Git 的正确使用姿势与最佳实践_第6张图片

1.1.2 集中版本控制

字节跳动 Git 的正确使用姿势与最佳实践_第7张图片

1.1.3 分布式版本控制

我们已经把三个不同的版本控制系统介绍完了,Git 作为分布式版本控制工具

虽然目前来讲是最先进使用最广的,但是其实在最开始,他也不是第一个出现的分布式版本控制软件,

接下来我们就介绍一下 Git 的发展历史,以及现在市面上基于 Git 演进的各种平台

字节跳动 Git 的正确使用姿势与最佳实践_第8张图片

1.2 Git发展历史

由于 bitkeeper 不是开源的,所以一开始其实 linux 团队的人就很排斥使用该软件

BitKeeper 是一个专有软件,由于 Linux 项目的一个开发人员,写了一个工具 去连接 BitKeeper, 因此被怀疑是对 Bitkeeper 做了逆向工程

因此这个公司就不允许 Linux 团队继续使用;有兴趣的可以可以自己去看 Git 的最早的代码历史

字节跳动 Git 的正确使用姿势与最佳实践_第9张图片

随着 Git 的发展,基于 Git 也衍生出了很多平台 除此之外,还有 BitBucket, Coding, 码云,阿里云效平台等等,每个平台都有自己的使用场景和优势, 我们选择最合适自己的平台即可

字节跳动 Git 的正确使用姿势与最佳实践_第10张图片

2.0 Git基本使用方式

在这一节中,我们会演示很多基本的 Git 命令,我们会在操作过程中通过 Git 仓库目录的变化来讲述 Git 的原理,在这个过程中,希望同学们能够跟随我来一起完成这些 Git 操作,通过这个实际操作的过程更深刻的去理解这些命令

字节跳动 Git 的正确使用姿势与最佳实践_第11张图片

常见问题

字节跳动 Git 的正确使用姿势与最佳实践_第12张图片

1.没配置 权限秘钥

2.1 Git 目录介绍

字节跳动 Git 的正确使用姿势与最佳实践_第13张图片

tree .git /F 查看文件 type

HEAD 表示当前指向的分支;config 当前仓库的配置;hooks 配置hook

Object 存储文件信息; refs 存储分支信息;

改代码新建文件 都是在工作区; Git add 加到暂存区;最后commit提交

字节跳动 Git 的正确使用姿势与最佳实践_第14张图片

重点关心一下这个 git 目录,因为我们后续每一个 git 操作都会映射到这个 git 目录之中,通过这里面的文件我们可以映射出所有版本的代码

2.1.1 Git Config

git 配置到底是个什么东西呢,我们又可以配置哪些内容呢,我们一起来了解一下 Git 配置这个概念

local 存在当前.git目录下的config文件; system系统文件配置存在/etc/gitconfig;全局global 存 在当前用户的.gitconfig下

级别:system > global > local

字节跳动 Git 的正确使用姿势与最佳实践_第15张图片

2.1.2 常见 git配置

字节跳动 Git 的正确使用姿势与最佳实践_第16张图片

2.2 Git Remote

Remote: 本地仓库与远端的关联信息

字节跳动 Git 的正确使用姿势与最佳实践_第17张图片

字节跳动 Git 的正确使用姿势与最佳实践_第18张图片

字节跳动 Git 的正确使用姿势与最佳实践_第19张图片

一个仓库拥有多个 remote, 从没有写权限的仓库 fetch 代码,push 到自己有权限的仓库

2.2.1 HTTP Remote

我们知道了什么是 remote 配置后,那我们本地是如何与 remote 进行通信的呢,

一般会通过 http 和 ssh 两种协议,这两种协议都需要对身份进行认证,

类似 go 这种语言,依赖库很多,所以我们需要不断的输入认证的账号密码,肯定是一件很麻烦的事情,因此我们需要配置一下免密的认证方式

字节跳动 Git 的正确使用姿势与最佳实践_第20张图片

一般情况,不推荐从HTTP访问Git,不那么安全,方便

2.2.2 SSH Remote

配置公司钥 还是拉取不下来代码问题 可能原因之一:

存在一种新版本 Windows代码不允许 使用dsa和rsa的key;在SSH层面拒绝访问

字节跳动 Git 的正确使用姿势与最佳实践_第21张图片

字节跳动 Git 的正确使用姿势与最佳实践_第22张图片

2.3 Git Add

(再次强调观察文件变化)了解好基本的 Git 配置后,我们会重点关注一下 Git 命令的原理,接下来我们一起来进行代码的编写和提交,在这个过程中,我们会更深入的去观察 git 目录下的内容变化,来理解我们执行的 git 命令到底做了什么,git 又是如何把代码通过版本管理起来的

字节跳动 Git 的正确使用姿势与最佳实践_第23张图片

2.4 Git Commit

字节跳动 Git 的正确使用姿势与最佳实践_第24张图片

2.5 Object

字节跳动 Git 的正确使用姿势与最佳实践_第25张图片

字节跳动 Git 的正确使用姿势与最佳实践_第26张图片

字节跳动 Git 的正确使用姿势与最佳实践_第27张图片

2.6 Refs

除了 objects 文件有变化,我们发现 refs 的文件内容也有变化

git checkout -b test #切换到新分支

字节跳动 Git 的正确使用姿势与最佳实践_第28张图片

字节跳动 Git 的正确使用姿势与最佳实践_第29张图片

字节跳动 Git 的正确使用姿势与最佳实践_第30张图片

2.7 附注标签

字节跳动 Git 的正确使用姿势与最佳实践_第31张图片

2.8 追溯历史版本

字节跳动 Git 的正确使用姿势与最佳实践_第32张图片

2.9 修改历史版本

字节跳动 Git 的正确使用姿势与最佳实践_第33张图片

字节跳动 Git 的正确使用姿势与最佳实践_第34张图片

2.10 Objects

字节跳动 Git 的正确使用姿势与最佳实践_第35张图片

2.11 Git GC

不设置为过期的话 在日志里面 还能看到 老的commit引用 ,就不能通过GC真实地删掉他

字节跳动 Git 的正确使用姿势与最佳实践_第36张图片

2.12 完整的 Git视图

将 Git 完整的视图描述一遍,重新强调 git 是怎么存储代码历史的。讲完了 Git 本地的存储方式,

引出多人合作和远端仓库同步的概念,从而进入到 Git Clone Pull Fetch 的内容

字节跳动 Git 的正确使用姿势与最佳实践_第37张图片

2.13 Git Clone&Pull&Fetch

字节跳动 Git 的正确使用姿势与最佳实践_第38张图片

2.14 Push 将本地代码 同步至远端

字节跳动 Git 的正确使用姿势与最佳实践_第39张图片

开篇 问题解答

字节跳动 Git 的正确使用姿势与最佳实践_第40张图片

3.0 Git研发流程

常见问题

字节跳动 Git 的正确使用姿势与最佳实践_第41张图片

3.1 不同的工作流

字节跳动 Git 的正确使用姿势与最佳实践_第42张图片

3.2 集中式工作流

字节跳动 Git 的正确使用姿势与最佳实践_第43张图片

3.2.1 集中式工作流-Gerrit

字节跳动 Git 的正确使用姿势与最佳实践_第44张图片

字节跳动 Git 的正确使用姿势与最佳实践_第45张图片

3.3 分支管理工作流

字节跳动 Git 的正确使用姿势与最佳实践_第46张图片

3.3.1 分支管理工作流 Git Flow

字节跳动 Git 的正确使用姿势与最佳实践_第47张图片

3.3.2 分支管理工作流 Github Flow

字节跳动 Git 的正确使用姿势与最佳实践_第48张图片

字节跳动 Git 的正确使用姿势与最佳实践_第49张图片

字节跳动 Git 的正确使用姿势与最佳实践_第50张图片

Branch protection rule

1、必须和request merge 才能提交;1.1、必须有其它人同意才能提交

2、check;3、讨论都被解决了才能提交;4、线性历史(阻止merge节点的产生);

Include Adamin...5、保护 对admin也生效(admin 不能为所欲为)

字节跳动 Git 的正确使用姿势与最佳实践_第51张图片

3.3.3 分支管理工作流 Gitlab Flow

字节跳动 Git 的正确使用姿势与最佳实践_第52张图片

总结这几个工作流的共性是都需要通过 git merge 来合入代码,从而引出介绍代码合并的方式

3.4 代码合并

字节跳动 Git 的正确使用姿势与最佳实践_第53张图片

字节跳动 Git 的正确使用姿势与最佳实践_第54张图片

字节跳动 Git 的正确使用姿势与最佳实践_第55张图片

字节跳动 Git 的正确使用姿势与最佳实践_第56张图片

3.5 如何选择合适的工作流

我们刚刚介绍了不同的工作流方式,以及他们的合入原理,其中有集中式工作流,和分支管理工作流,分支管理又分成典型的 GitFlow, Gitlab Flow, Github Flow

我们有这么多工作流可以选择,那我们又该如何去选择合适的工作流呢。

字节跳动 Git 的正确使用姿势与最佳实践_第57张图片

常见问题答案

字节跳动 Git 的正确使用姿势与最佳实践_第58张图片

总结课程内容

Git 是一个分布式版本控制工具,由 linus 开发,衍生出 github gitlab gerrit 等平台

Git 配置,Git 代码提交,Git 代码同步基本命令,以及 git 管理代码的原理,帮助我们更好的知道如何正确使用 Git 命令

讲述不同的研发流程,有以 gerrit 为代表的集中式工作流,和 gitlab/github 为代表的分支管理工作流,讲述了一些代码提交规范,保护分支,codereview 等概念,帮助我们规范研发流程

希望同学们能够从这节课程中学习到如何使用 Git,以及如何规范我们的研发流程,从而来提升我们的开发效率,以及提升我们的代码质量

非常感谢您阅读到这里,创作不易!如果这篇文章对您有帮助,希望能留下您的点赞 关注 收藏 评论感谢支持!!!

字节跳动 Git 的正确使用姿势与最佳实践_第59张图片

你可能感兴趣的:(字节跳动后端Go语言,git)