若是你是一個剛開始學習開發小白的話,那麼你必定常常聽到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進行代碼的添加、確認和推送。