Git是一個免費的、開源的分布式版本控制系統(tǒng),可以用于記錄一個或者若干個文件內容的變化,方便查閱或者修改。
Git官網:https://git-scm.com/
1、常見的版本控制系統(tǒng)
1.1、集中式版本控制系統(tǒng)(SVN、CVS、perforce)
集中式版本控制系統(tǒng)的示意圖如下:
特點:
1)一定會有一個中央服務器;
2)優(yōu)點在于所有用戶都可以看到最新更新的文件或者記錄,管理員也很方便掌握每個人的權限;
3)缺點是如果中央服務器出故障的時候,所有用戶都不能進行上傳、下載、更新等;
1.2、分布式版本控制系統(tǒng)(Git、BitKeeper)
分布式版本控制系統(tǒng)的示意圖如下:
每個客戶端都有備份和記錄,大家都可以查看到版本記錄和修改以后的記錄。
分布式版本控制系統(tǒng)存放的不是版本與版本之間的差異,而是版本的索引。
2、Git的工作區(qū)、暫存區(qū)、版本庫
使用Git時對其工作區(qū)、暫存區(qū)和版本庫這三個的概念是很有必要了解的,了解這三個概念有助于對Git的工作過程有一個比較明確的認知。那這三個概念都是些什么意思呢?
1)工作區(qū):
就是在電腦上能看到的目錄或者文件。簡單而言就是你的本地文件。
2)暫存區(qū)(stage 或 index):
一般存放在
.git
目錄下的 index 文件(.git/index)中,所以也可以把暫存區(qū)叫作索引(index)。
3)版本庫:
工作區(qū)中有一個隱藏目錄.git,這個不算工作區(qū),而是 Git 的版本庫。
工作區(qū)、版本庫中的暫存區(qū)和版本庫之間的關系如下圖所示:
上圖中左側為工作區(qū),右側為版本庫。在版本庫中標記為 "index" 的區(qū)域是暫存區(qū)(stage/index),標記為 "master" 的是 master 分支所代表的目錄樹。
上圖中可以看到,此時 "HEAD" 實際是指向 master 分支的一個"指針"。所以圖中的命令中出現(xiàn) HEAD 的地方是可以用 master 來替換。
上圖中的 objects 標識的區(qū)域為 Git 的對象庫,位于 ".git/objects" 目錄下,里面包含了創(chuàng)建的各種對象及內容。
2.1、一些指令執(zhí)行時所存在的關聯(lián)
2.1.1、向暫存區(qū)追加文件。
git add xxx
使用 git add 命令時,是對工作區(qū)修改(或新增)的文件進行操作的,會將暫存區(qū)的目錄樹更新。
同時,工作區(qū)修改(或新增)的文件內容會被寫入到對象庫中的一個新的對象中,而該對象的ID被記錄在暫存區(qū)的文件索引中。
2.1.2、暫存區(qū)文件上傳版本庫。
git commit -m "描述"
當執(zhí)行提交操作
git commit
時,會將暫存區(qū)的目錄樹寫到版本庫中,master 分支會做相應的更新。即 master 指向的目錄樹就是提交時暫存區(qū)的目錄樹。
2.1.3、版本回退。
git reset HEAD
當執(zhí)行
git reset HEAD
命令時,暫存區(qū)的目錄樹會被重寫,被 master 分支指向的目錄樹所替換,但是工作區(qū)不受影響。
2.1.4、刪除文件。
git rm --cached
1)當執(zhí)行
git rm --cached
命令時,會直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變。
2.1.5、檢出文件
git checkout . 或 git checkout --
1)當執(zhí)行
git checkout .
會用暫存區(qū)全部的文件替換工作區(qū)的文件。或者
git checkout --
命令時,會用暫存區(qū)指定的文件替換工作區(qū)的文件。這個操作是很危險,會清除工作區(qū)中未添加到暫存區(qū)的改動。
git checkout HEAD . 或者 git checkout HEAD
2)當執(zhí)行
git checkout HEAD .
會用 HEAD 指向的 master 分支中的全部文件替換暫存區(qū)和以及工作區(qū)中的文件。或者
git checkout HEAD
命令時,會用 HEAD 指向的 master 分支中的部分文件替換暫存區(qū)和以及工作區(qū)中的文件。這個命令也是極具危險性的,因為不但會清除工作區(qū)中未提交的改動,也會清除暫存區(qū)中未提交的改動。
3、代碼托管中心
除了本地庫可以保存版本的信息以外,為了更加方便使用,可以在代碼托管平臺中創(chuàng)建遠程庫,將本地庫和遠程庫建立連接,實現(xiàn)遠程協(xié)同的開發(fā)。它的好處有:
1)方便團隊內部合作開發(fā)項目、共同項目管理;
2)方便跨團隊之間的項目開發(fā)合作,使得不同公司、組織之間的合作開發(fā)可以方便的進行。
4、Git的工作流程
Git的工作流程可以歸納如下圖所示:
總的來說:Git是一個很方便的代碼托管平臺,使用者可以在遠程服務器上建立屬于自己的項目資源管理庫,實現(xiàn)遠程和本地的資源同步,本地添加、修改的文件可以及時更新到遠程服務器上保存管理。同時也可以便利于多人協(xié)作開發(fā),及時更新最新的資源庫文件當本地的工作區(qū),及時知曉最新的更新進度,加快開發(fā)的進度。
-
控制系統(tǒng)
+關注
關注
41文章
6511瀏覽量
110384 -
開源
+關注
關注
3文章
3218瀏覽量
42329 -
Git
+關注
關注
0文章
196瀏覽量
15720
發(fā)布評論請先 登錄
相關推薦
評論