For investors
股價(jià):
5.36 美元 %For investors
股價(jià):
5.36 美元 %認(rèn)真做教育 專(zhuān)心促就業(yè)
GIT是非常優(yōu)秀的版本控制工具,但是苦于git那晦澀難懂的man pages,還有眾多的命令選項(xiàng)和怪異的用法,git有點(diǎn)難學(xué)。這篇文章分享我學(xué)習(xí)過(guò)程中收藏的一些好圖,并圍繞這些圖講講我對(duì)git的理解,希望對(duì)大家有所幫助。
了解git,首先要弄清楚對(duì)象在被git管理過(guò)程中所處的4個(gè)階段,分別是:工作目錄、index(又稱(chēng)為暫存區(qū))、本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)。從時(shí)間先后來(lái)講,工作目錄的內(nèi)容是你當(dāng)前看到的,也是最新的;index區(qū)標(biāo)記了你當(dāng)前工作目錄中,哪些內(nèi)容是被git管理的;而本地倉(cāng)庫(kù)保存了對(duì)象被提交過(guò)的各個(gè)版本,比起工作目錄和暫存區(qū)的內(nèi)容,它要更舊一些;遠(yuǎn)程倉(cāng)庫(kù)是本地倉(cāng)庫(kù)的異地備份,遠(yuǎn)程倉(cāng)庫(kù)的內(nèi)容可能被分布在多個(gè)地點(diǎn)的處于協(xié)作關(guān)系的本地倉(cāng)庫(kù)修改,因此它可能與本地倉(cāng)庫(kù)同步,也可能不同步,但是它的內(nèi)容是最舊的。任何對(duì)象都是在工作目錄中誕生和被修改;任何修改都是從進(jìn)入index區(qū)才開(kāi)始被版本控制;只有把修改提交到本地倉(cāng)庫(kù),該修改才能在倉(cāng)庫(kù)中留下痕跡;而要與協(xié)作者分享本地的修改,可以把它們push到遠(yuǎn)程倉(cāng)庫(kù)來(lái)共享。圖最上方的add、commit、push等,展示了git倉(cāng)庫(kù)的產(chǎn)生過(guò)程。反過(guò)來(lái),我們可以從遠(yuǎn)程歷史倉(cāng)庫(kù)中獲得本地倉(cāng)庫(kù)的最后一個(gè)版本,clone到本地,從本地檢出對(duì)象的各個(gè)版本到index暫存區(qū)或工作目錄中,從而實(shí)現(xiàn)任何對(duì)象或整個(gè)倉(cāng)庫(kù)的任意階段狀態(tài)的”回滾”。當(dāng)正向和反向都能自由切換后,git就強(qiáng)大到無(wú)所不能了。
Linux git命令參數(shù)及用法詳解 #/Linux/2012-01/51205.htm
Fedora通過(guò)Http Proxy下載Git #/Linux/2009-12/23170.htm
在Ubuntu Server上安裝Git #/Linux/2009-06/20421.htm
服務(wù)器端Git倉(cāng)庫(kù)的創(chuàng)建(Ubuntu) #/Linux/2011-02/32542.htm
Linux下Git簡(jiǎn)單使用教程(以Android為例) #/Linux/2010-11/29883.htm
Git權(quán)威指南 PDF高清中文版 #/Linux/2013-10/91053.htm
Git 2分鐘指南 #/Linux/2014-11/109201.htm
一開(kāi)始接觸這些概念可能比較繞,其實(shí)在git入門(mén)階段,可以先拋開(kāi)遠(yuǎn)程倉(cāng)庫(kù)不看,只了解管理本地倉(cāng)庫(kù)的”3棵樹(shù)”就夠了。如下圖:
在開(kāi)始之前,我們需要把下面的圖看懂:
commit把暫存區(qū)的內(nèi)容存入到本地倉(cāng)庫(kù),并使得當(dāng)前分支的HEAD向后移動(dòng)一個(gè)提交點(diǎn)。如果對(duì)最后一次commit不滿(mǎn)意,可以使用git commit --amend來(lái)進(jìn)行撤銷(xiāo),修改之后再提交。如圖所示的,ed489被4ca87取代,但是git log里看不到ed489的影子,這也正是amend的本意:原地修改,讓上一次提交不露痕跡。
checkout用來(lái)檢出并切換分支。checkout成功后,HEAD會(huì)指向被檢出分支的最后一次提交點(diǎn)。對(duì)應(yīng)的,工作目錄、暫存區(qū)也都會(huì)與當(dāng)前的分支進(jìn)行匹配。下圖是執(zhí)行g(shù)it checkout maint后的結(jié)果:
reset命令把當(dāng)前分支指向另一個(gè)位置,并且相應(yīng)的變動(dòng)工作目錄和索引。如下圖,執(zhí)行g(shù)it reset HEAD~3后,當(dāng)前分支相當(dāng)于回滾了3個(gè)提交點(diǎn),由ed489回到了b325c:
reset有3種常用的模式:
—soft,只改變提交點(diǎn),暫存區(qū)和工作目錄的內(nèi)容都不改變
—mixed,改變提交點(diǎn),同時(shí)改變暫存區(qū)的內(nèi)容。這是默認(rèn)的回滾方式
—hard,暫存區(qū)、工作目錄的內(nèi)容都會(huì)被修改到與提交點(diǎn)完全一致的狀態(tài)
我們?cè)赾ommit、merge、rebase、打patch之前,通常都需要看看這次提交都干了些什么,于是diff命令就派上用場(chǎng)了:
來(lái)比較下上圖中5種不同的diff方式:
【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)?jiān)?0日內(nèi)與聯(lián)系我們,我們會(huì)予以更改或刪除相關(guān)文章,以保證您的權(quán)益!