GIT是非常的版本控制工具,但是苦于git那晦澀難懂的man pages,還有眾多的命令選項(xiàng)和怪異的用法,git有點(diǎn)難學(xué)。這篇文章分享我學(xué)習(xí)過程中收藏的一些好圖,并圍繞這些圖講講我對(duì)git的理解,希望對(duì)大家有所幫助。
GIT工作流程
了解git,首先要弄清楚對(duì)象在被git管理過程中所處的4個(gè)階段,分別是:工作目錄、index(又稱為暫存區(qū))、本地倉庫和遠(yuǎn)程倉庫。
從時(shí)間先后來講,工作目錄的內(nèi)容是你當(dāng)前看到的,也是新的;index區(qū)標(biāo)記了你當(dāng)前工作目錄中,哪些內(nèi)容是被git管理的;而本地倉庫保存了對(duì)象被提交過的各個(gè)版本,比起工作目錄和暫存區(qū)的內(nèi)容,它要更舊一些;遠(yuǎn)程倉庫是本地倉庫的異地備份,遠(yuǎn)程倉庫的內(nèi)容可能被分布在多個(gè)地點(diǎn)的處于協(xié)作關(guān)系的本地倉庫修改,因此它可能與本地倉庫同步,也可能不同步,但是它的內(nèi)容是舊的。任何對(duì)象都是在工作目錄中誕生和被修改;任何修改都是從進(jìn)入index區(qū)才開始被版本控制;只有把修改提交到本地倉庫,該修改才能在倉庫中留下痕跡;而要與協(xié)作者分享本地的修改,可以把它們push到遠(yuǎn)程倉庫來共享。圖上方的add、commit、push等,展示了git倉庫的產(chǎn)生過程。反過來,我們可以從遠(yuǎn)程歷史倉庫中獲得本地倉庫的后一個(gè)版本,clone到本地,從本地檢出對(duì)象的各個(gè)版本到index暫存區(qū)或工作目錄中,從而實(shí)現(xiàn)任何對(duì)象或整個(gè)倉庫的任意階段狀態(tài)的”回滾”。當(dāng)正向和反向都能自由切換后,git強(qiáng)大到無所不能了。
一開始接觸這些概念可能比較繞,其實(shí)在git入門階段,可以先拋開遠(yuǎn)程倉庫不看,只了解管理本地倉庫的”3棵樹”夠了。如下圖: