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/scsi
或drivers/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~1
,HEAD~2
代表倒數第二次提交--pretty
按指定格式顯示紀錄檔資訊,可選項有:oneline,short,medium,full,fuller,email,raw以及format:
$ 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}