一、什么是git?
Git是分布式版本控制系統
概念:
-
工作區:就是你在電腦里能看到的目錄;
- 暫存區:一般存放在(.git/index)中,所以我們把暫存區有時也叫作索引(index);
- 版本庫:工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫發布管理;
二、集中式vs分布式
- 集中式版本控制系統,版本庫是集中存放在中央服務器的,而干活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務器。中央服務器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然后回到家自己改,改完了,再放回圖書館。
- 集中式版本控制系統最大的毛病就是必須聯網才能工作;
- 分布式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫:
這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復制一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法干活了。
在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個局域網內,兩台電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分布式版本控制系統通常也有一台充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。
- Git極其強大的分支管理,把SVN等遠遠拋在了后面;
三、git使用(https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)
-
使用工作流程
- 克隆 Git資源作為工作目錄:gitclone http://xxxxxxxx.git;
- 切換到dev分支:gitcheckoutdev;
- 更新獲取資源源碼:gitpull origin xxx;
- 在克隆的資源上添加或修改文件: gitadd <filename>/gitadd*;
- 在提交前查看修改:gitlog;
- 提交修改:gitcommit -m "代碼提交信息";
- 提交到遠程庫:gitpush origin xxx;
-
分支管理
- 查看分支:gitbranch;
- 切換分支: gitcheckout (branchname);
- 創建分支:gitbranch (branchname),創建分支項目中技術經理會負責創建;
- 一般項目上有多少環境就創建幾個分支,一般項目都是3個環境(DEV,UAT,PROD);

四、git基本命令

五、git代碼沖突解決
-
沖突的原因
兩個已經提交的分支的相同文件相同位置的的不同操作進行了合並
-
影響
git pull時的自動merge被中斷,有可能引起大范圍的文件變更,對版本庫形成較大風險;
-
在git pull時git會將remote庫的資源下載並自動merge到本地版本庫,並自動commit遠程庫;
-
解決(2種)
- 代碼回滾:gitrevert與gitreset,通知技術經理,根據影響范圍確定執行REVERT還是RESET;
- 解決沖突:
- 執行gitadd xxx(xxx為沖突文件全路徑)
- 執行gitrebase --continue
- 執行gitpull --rebase
- 執行gitpush
六、gitLab和gitHub
- git是一種版本控制系統,是一個命令,是一種工具;
- gitlab 是一個基於git實現的在線代碼倉庫軟件,你可以用gitlab自己搭建一個類似於github一樣的系統,一般用於在企業、學校等內部網絡搭建git私服, 如公司的RDC;
- github是一個基於git實現的在線代碼倉庫,包含一個網站界面,向互聯網開放;
七、相關網站