git log
使用git log
命令,什么參數都沒有的話,會以下面的格式輸出所有的日志(我當前的git倉庫只有三個提交)。如果日志特別多的話,在git bash中,按向下鍵來查看更多,按q
鍵退出查看日志。
$ git log
commit c08099d1cf05fdc541752b049a91b92bdcf78a12
Author: zdk <zdk@menhoo.com> Date: Mon Jun 19 23:08:07 2017 +0800 add hello.txt to git rep commit 723687a41685667a01dbd6254eb148d19501c3f1 Author: zdk <zdk@menhoo.com> Date: Sun Jun 18 22:27:29 2017 +0800 add c.txt commit 1a29bde9519195f14e98270c29d125e9d18b8d87 Author: zdk <zdk@menhoo.com> Date: Sun Jun 11 22:40:21 2017 +0800 新增了a.txt和b.txt文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
git log –oneline
--oneline
參數可以將每條日志的輸出為一行,如果日志比較多的話,用這個參數能夠使結果看起來比較醒目。為了節約日志的篇幅,我后面也會頻繁地使用這個參數。
$ git log --oneline c08099d add hello.txt to git rep 723687a add c.txt 1a29bde 新增了a.txt和b.txt文件
- 1
- 2
- 3
- 4
git log -[length]
-[length]
參數用於指定顯示多少條日志
$ git log --oneline -2 c08099d add hello.txt to git rep 723687a add c.txt
- 1
- 2
- 3
這里面使用-2
來指定顯示前兩條日志
git log –skip=[skip]
--skip=[skip]
參數用來指定跳過前幾條日志。下面的命令用來查看第二和第三條日志
$ git log --skip=1 -2 --oneline 723687a add c.txt 1a29bde 新增了a.txt和b.txt文件
- 1
- 2
- 3
git log –pretty=raw
我在上面多次使用--oneline
是為了節約文章篇幅,使文章看起來盡量整潔。而--pretty=raw
則會顯示出關於每次提交的更多信息
$ git log --pretty=raw -1 commit c08099d1cf05fdc541752b049a91b92bdcf78a12 tree 5ef6cd7051101c4294cb92980f0cf3740478e120 parent 723687a41685667a01dbd6254eb148d19501c3f1 author zdk <zdk@menhoo.com> 1497884887 +0800 committer zdk <zdk@menhoo.com> 1497884887 +0800 add hello.txt to git rep
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
輸出的信息中包括提交ID,文件樹ID,父提交ID,作者和提交者,這些信息都非常有用。
git log -p
-p
參數輸出的信息會更多,用來顯示提交的改動記錄,相當於多次使用git show [commit_id]
的結果。
$ git log -1 -p commit c08099d1cf05fdc541752b049a91b92bdcf78a12 Author: zdk <zdk@menhoo.com> Date: Mon Jun 19 23:08:07 2017 +0800 add hello.txt to git rep diff --git a/hello.txt b/hello.txt new file mode 100644 index 0000000..ce01362 --- /dev/null +++ b/hello.txt @@ -0,0 +1 @@ +hello
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
git log –graph
--graph
參數會繪制提交的線索,如果有合並的話,也會更清晰地顯示出來
$ git log --graph --oneline * c08099d add hello.txt to git rep * 723687a add c.txt * 1a29bde 新增了a.txt和b.txt文件
- 1
- 2
- 3
- 4
git log –decorate
--decorate
參數用來顯示一些相關的信息,如HEAD、分支名、tag名等
$ git log --decorate --oneline c08099d (HEAD -> master) add hello.txt to git rep 723687a add c.txt 1a29bde 新增了a.txt和b.txt文件
- 1
- 2
- 3
- 4
下面使用git tag
命令給第二次提交加上一個名叫important
的tag。
git tag 'important' 723687a
- 1
然后再次使用--decorate
參數來查看一下
$ git log --decorate --oneline c08099d (HEAD -> master) add hello.txt to git rep 723687a (tag: important) add c.txt 1a29bde 新增了a.txt和b.txt文件
- 1
- 2
- 3
- 4
顯示出了tag的信息。
git log –name-status
--name-status
參數會帶出每次提交對應的文件改動。
$ git log --name-status --oneline
c08099d add hello.txt to git rep A hello.txt 723687a add c.txt A c.txt 1a29bde 新增了a.txt和b.txt文件 A a.txt A b.txt
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
搜索git日志
通過作者搜索
有時候會從提交記錄中查看一下自己(或某個人)的某次提交,git log命令可以很快地檢索出這些信息
$ git log --author yourname
- 1
可以篩選出yourname
用戶提交的所有日志。這里的yourname
可以包含通配符,從Author: zdk <zdk@menhoo.com>
的信息中匹配信息。
通過提交關鍵字搜索
$ git log --grep keywords
- 1
可以從提交的關鍵字中抓取匹配的commit項。
通過文件名搜索
有時候,我們想查某個文件的所有修改記錄,可以根據文件名來過濾一下只跟這個文件有關的提交,就可以使用-p
參數
git log -p -- RELEASE-NOTE.md
- 1
注意,這個--
后面跟的是完整的文件名的相對地址,不是模糊匹配。如果你的文件的相對地址是config/my.config
的話,你就需要用下面的命令
git log -p -- config/my.config
- 1
通過組合使用--auther
、grep
、-p
這幾個參數,幾乎能滿足大部分檢索需求了。