Git是一個(gè)免費(fèi)的、開(kāi)源的分布式版本控制系統(tǒng),可以用于記錄一個(gè)或者若干個(gè)文件內(nèi)容的變化,方便查閱或者修改。
Git官網(wǎng):https://git-scm.com/
1、常見(jiàn)的版本控制系統(tǒng)
1.1、集中式版本控制系統(tǒng)(SVN、CVS、perforce)
集中式版本控制系統(tǒng)的示意圖如下:

特點(diǎn):
1)一定會(huì)有一個(gè)中央服務(wù)器;
2)優(yōu)點(diǎn)在于所有用戶(hù)都可以看到最新更新的文件或者記錄,管理員也很方便掌握每個(gè)人的權(quán)限;
3)缺點(diǎn)是如果中央服務(wù)器出故障的時(shí)候,所有用戶(hù)都不能進(jìn)行上傳、下載、更新等;
1.2、分布式版本控制系統(tǒng)(Git、BitKeeper)
分布式版本控制系統(tǒng)的示意圖如下:

每個(gè)客戶(hù)端都有備份和記錄,大家都可以查看到版本記錄和修改以后的記錄。
分布式版本控制系統(tǒng)存放的不是版本與版本之間的差異,而是版本的索引。
2、Git的工作區(qū)、暫存區(qū)、版本庫(kù)
使用Git時(shí)對(duì)其工作區(qū)、暫存區(qū)和版本庫(kù)這三個(gè)的概念是很有必要了解的,了解這三個(gè)概念有助于對(duì)Git的工作過(guò)程有一個(gè)比較明確的認(rèn)知。那這三個(gè)概念都是些什么意思呢?
1)工作區(qū):
就是在電腦上能看到的目錄或者文件。簡(jiǎn)單而言就是你的本地文件。
2)暫存區(qū)(stage 或 index):
一般存放在
.git
目錄下的 index 文件(.git/index)中,所以也可以把暫存區(qū)叫作索引(index)。
3)版本庫(kù):
工作區(qū)中有一個(gè)隱藏目錄.git,這個(gè)不算工作區(qū),而是 Git 的版本庫(kù)。
工作區(qū)、版本庫(kù)中的暫存區(qū)和版本庫(kù)之間的關(guān)系如下圖所示:

上圖中左側(cè)為工作區(qū),右側(cè)為版本庫(kù)。在版本庫(kù)中標(biāo)記為 "index" 的區(qū)域是暫存區(qū)(stage/index),標(biāo)記為 "master" 的是 master 分支所代表的目錄樹(shù)。
上圖中可以看到,此時(shí) "HEAD" 實(shí)際是指向 master 分支的一個(gè)"指針"。所以圖中的命令中出現(xiàn) HEAD 的地方是可以用 master 來(lái)替換。
上圖中的 objects 標(biāo)識(shí)的區(qū)域?yàn)?Git 的對(duì)象庫(kù),位于 ".git/objects" 目錄下,里面包含了創(chuàng)建的各種對(duì)象及內(nèi)容。
2.1、一些指令執(zhí)行時(shí)所存在的關(guān)聯(lián)
2.1.1、向暫存區(qū)追加文件。
git add xxx
使用 git add 命令時(shí),是對(duì)工作區(qū)修改(或新增)的文件進(jìn)行操作的,會(huì)將暫存區(qū)的目錄樹(shù)更新。
同時(shí),工作區(qū)修改(或新增)的文件內(nèi)容會(huì)被寫(xiě)入到對(duì)象庫(kù)中的一個(gè)新的對(duì)象中,而該對(duì)象的ID被記錄在暫存區(qū)的文件索引中。
2.1.2、暫存區(qū)文件上傳版本庫(kù)。
git commit -m "描述"
當(dāng)執(zhí)行提交操作
git commit
時(shí),會(huì)將暫存區(qū)的目錄樹(shù)寫(xiě)到版本庫(kù)中,master 分支會(huì)做相應(yīng)的更新。即 master 指向的目錄樹(shù)就是提交時(shí)暫存區(qū)的目錄樹(shù)。
2.1.3、版本回退。
git reset HEAD
當(dāng)執(zhí)行
git reset HEAD
命令時(shí),暫存區(qū)的目錄樹(shù)會(huì)被重寫(xiě),被 master 分支指向的目錄樹(shù)所替換,但是工作區(qū)不受影響。
2.1.4、刪除文件。
git rm --cached
1)當(dāng)執(zhí)行
git rm --cached
命令時(shí),會(huì)直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變。
2.1.5、檢出文件
git checkout . 或 git checkout --
1)當(dāng)執(zhí)行
git checkout .
會(huì)用暫存區(qū)全部的文件替換工作區(qū)的文件。或者
git checkout --
命令時(shí),會(huì)用暫存區(qū)指定的文件替換工作區(qū)的文件。這個(gè)操作是很危險(xiǎn),會(huì)清除工作區(qū)中未添加到暫存區(qū)的改動(dòng)。
git checkout HEAD . 或者 git checkout HEAD
2)當(dāng)執(zhí)行
git checkout HEAD .
會(huì)用 HEAD 指向的 master 分支中的全部文件替換暫存區(qū)和以及工作區(qū)中的文件。或者
git checkout HEAD
命令時(shí),會(huì)用 HEAD 指向的 master 分支中的部分文件替換暫存區(qū)和以及工作區(qū)中的文件。這個(gè)命令也是極具危險(xiǎn)性的,因?yàn)椴坏珪?huì)清除工作區(qū)中未提交的改動(dòng),也會(huì)清除暫存區(qū)中未提交的改動(dòng)。
3、代碼托管中心
除了本地庫(kù)可以保存版本的信息以外,為了更加方便使用,可以在代碼托管平臺(tái)中創(chuàng)建遠(yuǎn)程庫(kù),將本地庫(kù)和遠(yuǎn)程庫(kù)建立連接,實(shí)現(xiàn)遠(yuǎn)程協(xié)同的開(kāi)發(fā)。它的好處有:
1)方便團(tuán)隊(duì)內(nèi)部合作開(kāi)發(fā)項(xiàng)目、共同項(xiàng)目管理;
2)方便跨團(tuán)隊(duì)之間的項(xiàng)目開(kāi)發(fā)合作,使得不同公司、組織之間的合作開(kāi)發(fā)可以方便的進(jìn)行。
4、Git的工作流程
Git的工作流程可以歸納如下圖所示:

總的來(lái)說(shuō):Git是一個(gè)很方便的代碼托管平臺(tái),使用者可以在遠(yuǎn)程服務(wù)器上建立屬于自己的項(xiàng)目資源管理庫(kù),實(shí)現(xiàn)遠(yuǎn)程和本地的資源同步,本地添加、修改的文件可以及時(shí)更新到遠(yuǎn)程服務(wù)器上保存管理。同時(shí)也可以便利于多人協(xié)作開(kāi)發(fā),及時(shí)更新最新的資源庫(kù)文件當(dāng)本地的工作區(qū),及時(shí)知曉最新的更新進(jìn)度,加快開(kāi)發(fā)的進(jìn)度。
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6758瀏覽量
111807 -
開(kāi)源
+關(guān)注
關(guān)注
3文章
3612瀏覽量
43488 -
Git
+關(guān)注
關(guān)注
0文章
203瀏覽量
16115
發(fā)布評(píng)論請(qǐng)先 登錄
Git常用的超級(jí)實(shí)用命令

git命令的基本使用
Git是什么?Git的基本使用資料說(shuō)明

騰訊是如何使用Git?

Git的參考手冊(cè)教程免費(fèi)下載

git 總結(jié)

利用Learn Git Branching輕松學(xué)習(xí)Git
git rebase與相關(guān)git merge命令比較

git rebase和git merge的區(qū)別

Git是什么 Git介紹

Git命令的綜合手冊(cè)怎么找
git基本操作命令用法

評(píng)論