一、Git & Github & Gitlab
如果你是一个刚开始学习开发小白的话,那么你一定经常听到Git/Github,甚至GitLab。那么什么是git、github、gitlab呢?
1.1 什么是Git、Github、GitLab?
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件,说白了,是一个版本管理工具。
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,目前,GitHub是最大的代码托管平台,可以将仓库、提交记录等记录在网站上,开源、收费,
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务,是一款开源等软件,可供于搭建自己的代码管理平台。
1.2 三者的联系和区别
Git是一款版本管理的工具,可以管理GitHub和GitLab;GitHub为代码托管平台,可以免费托管用户的代码,若代码、仓库不希望对外公布,则需要付费;gitlab则是一款可以搭建在个人/公司服务器上的代码管理平台,自己对代码管理平台进行管理。三者的关系类似于博客书写工具-公共博客(如csdn博客)-私人博客(如搭建在个人服务器之上的wordpress、ghost等博客系统)。
二、远程仓库和本地仓库
2.1 远程/本地仓库
既然我们想要使用GitHub/GitLab保管的代码,那么我们就需要在GitHub/GitLab上建立一个类似于操作系统中文件夹的东西,用于保管代码,我们可以称之为仓库。
处在GitHub/GitLab等线上等、非本地的仓库,我们称之为远程仓库,远程仓库为搭建在github或gitlab上的仓库,即在github或gitlab上创建新的项目。而处于本地的、个人电脑上的带有特殊含义的文件夹,我们称之为本地仓库。
2.2 远程-本地仓库间的同步
既然有两个仓库,那么不可避免的,就需要对两个仓库进行数据的同步处理。
我们把从远程仓库的仓库文件下载到本地的过程,称之为clone(克隆);相反,从本地到远程,则称之为push(推送);把从远程仓库内容更新到本地仓库的操作,叫pull/fetch。
pull:相当于是从远程获取最新版本并merge到本地;
fetch:相当于是从远程获取最新版本到本地,不会自动merge。
远程仓库——>本地仓库,使用git clone命令(克隆)
本地仓库——>远程仓库,使用git push命令(推送)
需要注意的是:clone和push的不是文件,而是版本;远程和本地是分开的,我们可以通过clone和push进行仓库的同步,类似于QQ的消息记录一样。
三、本地仓库的详解
本地仓库是我们代码编写、修改的场所,打交道的次数也相对较多,因此,拆分一下本地仓库是很有必要的。
3.1 本地仓库
本地仓库为处于本地的、个人电脑上的带有特殊含义的文件夹。而本地仓库又分为:(1)工作目录(2)暂缓区(3)版本仓库。
我们可以简单粗暴的将工作目录理解为文件夹;版本仓库(Repository) ,即工作目录有一个隐藏目录“.git”,这个目录不算工作区,而是Git的版本仓库;而位于连接工作目录和版本仓库的地段的区域我们可以称之为暂缓区,也可以简单理解为,需要提交的文件修改需要通通放到暂缓区后,才能进入版本仓库。
工作目录——>暂缓区,使用git add命令(添加)
暂缓区——>版本仓库,使用git commit命令(确认)
工作目录——>版本仓库,使用git commit -am命令
四、fork&merge request
4.1 fork
Fork 即是 服务端的仓库克隆,包含了原来的仓库的所有内容。
4.2 merge request
当你想更正别人仓库里的错误时,要走一个流程:
不会有人直接让你改修原仓库,所以,必须先 fork 别人的仓库,相当于拷贝一份
clone 到本地分支,做一些 bug fix
发起 merge request(又称为pull request) 给原仓库,让他看到你修改的内容
如果得到原仓库的作者认同的话,就他就会 merge 到他自己的项目中
至此,整个 merge request 的过程就结束了。
五、git更多功能
到了这里,你是否就以为你已经学会了git呢?其实git还有很多很多的功能可以实现,如果有兴趣的话,你可以查阅相关文档进行下一步的学习哦!
1. 分支
2. 代码合并
3. 历史代码回滚
4. 发布管理
六、命令行&图形工具
6.1 命令行
作为码农,建议能使用命令行,就使用命令行。
6.2 图形工具
如非要使用图形界面不可的话,windows和mac下都可以安装GitHub for Desktop。当然,还有很多款工具也支持git,如:VS Code也可以使用git进行代码的添加、确认和推送。