這篇博文大量引用了如下地址的內(nèi)容:
http://www.worldhello.net/2010/11/30/2166.html
http://gitbook.liuhui998.com/index.html
git常用命令總結(jié):
1、別名git log --pretty :格式化日志輸出,'--pretty'參數(shù)可以使用若干表現(xiàn)格式,如'oneline'、'short'。git log --pretty=oneline,還有很多其他參數(shù),具體見help。也可以用'--reverse'參數(shù)來逆向顯示所有日志。
git log --graph --oneline : 顯示簡(jiǎn)短的commit的SHA1 與注釋
git log -p : 顯示補(bǔ)丁patchs
從別處找來的修改log信息展示顏色的參數(shù):
git
log --graph --pretty=
format
:
'%Cred%h%Creset
-%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
--abbrev-commit
--
3、git status : 查看文件狀態(tài)
git status -s : 查看精簡(jiǎn)格式的文件狀態(tài)
4、git branch
顯示所有分支,其中分支前有*號(hào)的為當(dāng)前工作分支
5、git rev-parse :可用于顯示引用對(duì)應(yīng)的commit ID
6、git add :很多版本控件系統(tǒng)都提供了一個(gè)"add"命令,一般是用作向版本庫中添加新文件,git add不但是用來向版本庫中添加新文件(即從untracked變成tracked,加入追蹤),還可以添加已經(jīng)在版本控制中但是剛修改過的文件,在這兩種情況下,git都會(huì)獲得當(dāng)前文件的快照并且把內(nèi)容stage暫存到index中,為下次的commit做好準(zhǔn)備。
具體的操作有如下:
7、接下來先介紹下index(或者稱stage、暫存區(qū)、索引區(qū))的概念,然后再分析git diff的用法。
暫存區(qū)是git最重要的概念之一,當(dāng)然它也不是很好理解,一但理解后,很多git的命令就不在那么神秘了。
在版本庫(.git)目錄下,有一個(gè) index 文件,我們針對(duì)這個(gè)文件做一個(gè)有趣的試驗(yàn)。 首先我們執(zhí)行 "git checkout" 命令撤銷工作區(qū)中 welcome.txt文件尚未提交的修改。
$ git checkout -- welcome.txt $ git status -s我們通過狀態(tài)輸出,看以看到工作區(qū)已經(jīng)沒有改動(dòng)了。我們查看一下 .git/index 文件,注意該文件的時(shí)間戳(19:37:44):
$ ls --full-time .git/index -rw-r--r-- 1 jiangxin jiangxin 112 2010-11-29 19:37:44.625246224 +0800 .git/index我們?cè)俅螆?zhí)行 "git status" 命令,然后顯示 .git/index 文件的時(shí)間戳(19:37:44),和上面的一樣。
$ git status -s $ ls --full-time .git/index -rw-r--r-- 1 jiangxin jiangxin 112 2010-11-29 19:37:44.625246224 +0800 .git/index現(xiàn)在我們更改一下 welcome.txt 的時(shí)間戳,但是不改變它的內(nèi)容。然后再執(zhí)行 "git status" 命令,然后查看 .git/index文件時(shí)間戳(19:42:06)。
$ touch welcome.txt $ git status -s $ ls --full-time .git/index -rw-r--r-- 1 jiangxin jiangxin 112 2010-11-29 19:42:06.980243216 +0800 .git/index看到了么,時(shí)間戳改變了! 這個(gè)試驗(yàn)說明當(dāng)執(zhí)行 "git status" 命令掃描工作區(qū)改動(dòng)的時(shí)候,先依據(jù) .git/index 文件中記錄的(工作區(qū)跟蹤文件的)時(shí)間戳、長度等信息判斷工作區(qū)文件是否改變。如果工作區(qū)的文件時(shí)間戳改變,說明文件的內(nèi)容 可能 被改變了,需要要打開文件,讀取文件內(nèi)容,和更改前的原始文件相比較,判斷文件內(nèi)容是否被更改。如果文件內(nèi)容沒有改變,則將該文件新的時(shí)間戳記錄到 .git/index 文件中。因?yàn)榕袛辔募欠窀?,使用時(shí)間戳、文件長度等信息進(jìn)行比較要比通過文件內(nèi)容比較要快的多,所以 Git 這樣的實(shí)現(xiàn)方式可以讓工作區(qū)狀態(tài)掃描更快速的執(zhí)行,這也是 Git 高效的因素之一。
文件 .git/index 實(shí)際上就是一個(gè)包含文件索引的目錄樹,像是一個(gè)虛擬的工作區(qū)。在這個(gè)虛擬工作區(qū)的目錄樹中,記錄了文件名、文件的狀態(tài)信息(時(shí)間戳、文件長度等),文件的 內(nèi)容并不存儲(chǔ)其中,而是保存在 Git 對(duì)象庫(.git/objects)中,文件索引建立了文件和對(duì)象庫中對(duì)象實(shí)體之間的對(duì)應(yīng)。下面這個(gè)圖展示了工作區(qū)、版本庫中的暫存區(qū)和版本庫之間的關(guān) 系。
工作區(qū)、版本庫、暫存區(qū)原理圖
在這個(gè)圖中,我們可以看到部分 Git 命令是如何影響工作區(qū)和暫存區(qū)(stage, index)的。8、恢復(fù)刪除的文件
9、修改文件名(或者移動(dòng)文件)
聯(lián)系客服