git log命令


git log命令用於顯示提交紀錄檔資訊。

使用語法

git log [<options>] [<revision range>] [[\--] <path>…]

描述

git log命令用於顯示提交紀錄檔資訊。

該命令採用適用於git rev-list命令的選項來控制顯示的內容以及如何以及適用於git diff- *命令的選項,以控制如何更改每個提交引入的內容。

範例

以下是一些範例 -

1.顯示整個提交歷史記錄,但跳過合併

$ git log --no-merges
commit c5f8a258babf5eec54edc794ff980d8340396592
Author: maxsu <[email protected]>
Date:   Wed Jul 12 22:07:59 2017 +0800

    commit a new file: newfile.txt
... ...

2.顯示自v2.6.12版以來所有提交更改include/scsidrivers/scsi子目錄中的任何檔案的所有提交

$ git log master include/scsi drivers/scsi

3.顯示最近兩週的更改檔案gitk。 「--」是必要的,以避免與名為gitk的分支混淆

$ git log --since="2 weeks ago" -- gitk

4.顯示「test」分支中尚未在「release」分支中的提交,以及每個提交修改的路徑列表

$ git log --name-status release..test

5.顯示更改builtin/rev-list.c的提交,包括在檔案被賦予其現有名稱之前發生的提交。

$ git log --follow builtin/rev-list.c

6.顯示在任何本地分支中的所有提交,但不包括任何遠端跟蹤分支機構的起始點(origin不具有)。

git log --branches --not --remotes=origin

7.顯示本地主伺服器中的所有提交,但不顯示任何遠端儲存庫主分支。

git log master --not --remotes=*/master

8.顯示歷史,包括變化差異,但僅從「主分支」的角度來看,忽略來自合併分支的提交,並顯示合併引入的變化的完全差異。只有當遵守在一個整合分支上合併所有主題分支的嚴格策略時,這才有意義。

git log -p -m --first-parent

9.顯示檔案main.c中的函式main()隨著時間的推移而演變。

git log -L '/int main/',/^}/:main.c

10.將顯示最近三次的提交。

git log -3

11.根據提交ID查詢紀錄檔

$ git log commit_id    #查詢ID(如:6bab70a08afdbf3f7faffaff9f5252a2e4e2d552)之前的記錄,包含commit
$ git log commit1_id commit2_id #查詢commit1與commit2之間的記錄,包括commit1和commit2
$ git log commit1_id..commit2_id #同上,但是不包括commit1

其中,commit_id可以是提交雜湊值的簡寫模式,也可以使用HEAD代替。HEAD代表最後一次提交,HEAD^為最後一個提交的父提交,等同於HEAD~1HEAD~2代表倒數第二次提交
--pretty按指定格式顯示紀錄檔資訊,可選項有:oneline,short,medium,full,fuller,email,raw以及format:,預設為medium,可以通過修改組態檔案來指定預設的方式。

$ git log (--pretty=)oneline

常見的format選項:

#選項     #說明
%H      提交物件(commit)的完整雜湊字串
%h      提交物件的簡短雜湊字串
%T      樹物件(tree)的完整雜湊字串
%t      樹物件的簡短雜湊字串
%P      父物件(parent)的完整雜湊字串
%p      父物件的簡短雜湊字串
%an     作者(author)的名字
%ae     作者的電子郵件地址
%ad     作者修訂日期(可以用 -date= 選項客製化格式)
%ar     作者修訂日期,按多久以前的方式顯示
%cn     提交者(committer)的名字
%ce     提交者的電子郵件地址
%cd     提交日期
%cr     提交日期,按多久以前的方式顯示
%s      提交說明

註:作者是指最後一次修改檔案的人;而提交者是指提交該檔案的人。

$ git log --pretty=format:"%an %ae %ad %cn %ce %cd %cr %s" --graph

--mergs - 檢視所有合併過的提交歷史記錄
--no-merges - 檢視所有未被合併過的提交資訊
--author=someonet - 查詢指定作者的提交記錄

$ git log --author=maxsu

--since--affter - 僅顯示指定時間之後的提交(不包含當前日期)
--until--before - 僅顯示指定時間之前的提交(包含當前日期)

$ git log --before={3,weeks,ago} --after={2018-04-18}