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