最近全过程这个词特别火,比如有全过程民主。有朋友想让我分享一下全过程Git教程,就是在公司里的Git真实的使用案例,而非课堂中的应试教育。我一般很少写比较全面的教程,一般只写对某一个技术难点解决的过程和思路,因为我是小毛驴拉磨没有长劲儿,对大而全的东西不怎么感兴趣。但既然网友提到这个需求,我就尝试写一下,不足之处请反馈。

区别

有帮助的截图
应试教育和工作实际经验

其中红色是应试教育,实际工作中不同岗位需要掌握的程度不同,没有人会把有限的生命用在掌握低频操作上。除非他的人生只有掌握Git这一件事。

我会为每个步骤标注上高频低频操作,如果是高频则需要程序员掌握,如果是低频操作,建议代码版本管理负责人(技术主管)掌握即可。

Git服务器选择(低频)

Git服务器 优缺 备注
GitHub 完全在外网,方便快捷,支持图形化操作 免安装
GitLab 可以内网部署,支持图形化操作 内网一键安装
其它 不建议选择,现在就是图形化Git的时代  

下面以gitlab为例子:

有帮助的截图
GitLab

我记得我2013年装gitlab的时候,还需要自己配置mysql,全都不熟悉,生生装了两周才装成功。现在gitlab采用了docker容器技术,和系统中的软件不相互干扰。半个小时就可以安装好了。

Git客户端(低频)

Git客户端我真正使用的组合如下,以下都会安装,每个用处不同:

Git客户端 优缺 备注
命令行 命令行是处理一些更低层操作  
Git Gui 安装后可以自动拥有了Git命令,可以进行命令操作  
Github Desktop 方便查看差异选择要提交的文件,可以做到免输入命令  
IDEA/AS/Xcode自带Git插件 和开发IDE结合比较紧密,但易用性来讲,不如上用的  

生成和上传公钥(低频)

电脑的公钥,类似生活中的指纹。生成公钥并上传到Git服务器上,这一步用现实生活中的例子来描述,好比公司行政给你录门禁指纹,能让你自由出入公司。

生成指纹

你手上的指纹是天生自带,但是电脑不是,需要先生成。在桌面右击打开Git命令行,如下以下命令生成公钥

ssh-keygen

然后敲两次回车之后就可以了,使用cat ~/.ssh/id_rsa.pub查看到类似乱码一样的东西。

这个就是你的电脑的“指纹”了;

录指纹

一般是行政小姐姐指导你去门禁那里输入管理员密码然后开始录入,门禁就能识别你的指纹了。在程序员电脑上帮他生产公钥之后,打开安装的Gitlab,将公钥添加进行之后,该用户就可以进行推拉代码了。

clone (高频)

克隆代码仓库,员工在公司项目中几乎用不到。但是一般需要从GitHub上下载Demo来抄,所以还是要掌握。主管还要掌握如何clone带有子模块的仓库。

add (高频)

这个算是高频中的No.1,修改完代码后第一步需要做的就是add,但是这个命令最容易出问题。因为工作使用和学习时是反着的,类似学车时双手握方向盘,实际老司机都是单手握。一定不能用git add .或者GitHub Desktop中的全选提交。一定要一个一个选出自己必须提交的文件,而不是都全部提交。

commit (高频)

这一步一般和add混合为一步,描述内容一般要求和注释一样,不能词不达意。当然实际中也有只输入1当为描述就commit了。

有帮助的截图
git_add_commit

比如写此博客也是使用的git管理,注定不会有人和我合作,所以描述就可以写得随意一些。比如我写了1

有帮助的截图
简单的提交描述

push(高频)

推送是将本地代码推到远程仓库上;如果你使用Git管理的博客,那就理解成发布

pull(高频)

拉取并合并代码,改代码之前先拉取一下。

submodule (低频)

子模块,一般程序员不需要管理,由主管管理。

gitignore(低频)

忽略文件,一般程序员不需要动此文件。

其它

如果代码合并冲突了,一种方案是处理冲突;另一种是回退git reset --hard xxxxx。我用得后者更多,因为我知道一般是程序员没有pull代码就开始修改造成的,我会让他重新提交。 不固定非得使用命令行还是图形化客户端,比如我能准确使用上面描述的每个命令,但在工作中也不会全部使用命令,40%使用命令,60%使用图形化,两者相结合。