1. 程式人生 > >4. git log的常見用法

4. git log的常見用法

line null commit master 根據 -- blog 滿足 文件的

git log

======見https://blog.csdn.net/daguanjia11/article/details/73823617

+++++++++++++++++++++++

使用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 <[email protected]> 1497884887 +0800
committer zdk <[email protected]> 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 <[email protected]>的信息中匹配信息。

通過提交關鍵字搜索

$ git log --grep keywords
  • 1

可以從提交的關鍵字中抓取匹配的commit項。

通過文件名搜索

有時候,我們想查某個文件的所有修改記錄,可以根據文件名來過濾一下只跟這個文件有關的提交,就可以使用-p參數

git log -p -- RELEASE-NOTE.md
  • 1

註意,這個--後面跟的是完整的文件名的相對地址,不是模糊匹配。如果你的文件的相對地址是config/my.config的話,你就需要用下面的命令

git log -p -- config/my.config
  • 1

通過組合使用--authergrep-p這幾個參數,幾乎能滿足大部分檢索需求了。

4. git log的常見用法