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