1. 程式人生 > >Git命令之log日誌

Git命令之log日誌

目錄

功能

格式化輸出

功能

在提交了若干更新之後,又或者克隆了某個專案,想回顧下提交歷史,可以使用 git log 命令檢視。

檢視所有日誌

git log

git log 有許多選項可供特殊篩選

$ git log -p -2

-p 展開顯示每次提交的內容差異 -2 表示近兩次的更新

查詢改動某個檔案的所有日誌

git log --pretty=oneline somefile.java
git log --oneline somefile.java
git log --pretty=format:"%h  %an,%cd : %s" somefile.java

格式化輸出

git log --pretty=format:" "

下表列出了常用的格式佔位符寫法及其代表的意義。

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

指定日期、關鍵字、作者

注意作者與提交者的關係:作者是程式的修改者,提交者是程式碼提交人。

如指定2天前,作者為“BeginMan”的提交含有關鍵字'init'的前2條記錄:

$ git log --since=2.days --author=BeginMan --grep=init -2

注意:上面選項後面的引數可以帶單雙引號,如--author=""BeginMan"""

  • 僅顯示指定時間之後的提交
git log --since=2.days
  • 僅顯示指定時間之前的提交
git log --until=10.days
  • 僅顯示指定作者相關的提交
git log --author=BeginMan
  • 僅顯示指定提交者相關的提交
git log --committer=Jack
  • 僅顯示指定關鍵字的提交
git log --grep=init

顯示修改的檔案

  • 僅在提交資訊後顯示已修改的檔案清單
git log --name-only
git log --name-only --oneline
  • 顯示新增、修改、刪除的檔案清單
git log --name-status
git log --name-status --oneline

顯示日誌統計資訊

  • 顯示每次更新的檔案修改統計資訊,也顯示更新的檔名和修改的多少。
git log --stat
git log --stat --oneline
  • 只顯示 --stat 中最後的行數修改新增的統計。不顯示更新的檔名。
git log --shortstat
git log --shortstat --oneline

顯示單次日誌資訊

git show [commit id]
git show [commit id] --name-only
git show [commit id] --name-only --oneline
git show [commit id] --name-status
git show [commit id] --stat
git show [commit id] --shortstat

查詢某個字串在何時新增

git log -S"string wanted to search" --oneline

將日誌按照格式匯出到檔案中

git log --pretty=format:'%h was %an, %ar, message: %s' > log.log

以上只是簡單介紹了一些 git log 命令支援的選項。表 2-2 還列出了一些其他常用的選項及其釋義。

選項 說明
-p 按補丁格式顯示每個更新之間的差異。
--word-diff 按 word diff 格式顯示差異。
--stat 顯示每次更新的檔案修改統計資訊。
--shortstat 只顯示 --stat 中最後的行數修改新增移除統計。
--name-only 僅在提交資訊後顯示已修改的檔案清單。
--name-status 顯示新增、修改、刪除的檔案清單。
--abbrev-commit 僅顯示 SHA-1 的前幾個字元,而非所有的 40 個字元。
--relative-date 使用較短的相對時間顯示(比如,“2 weeks ago”)。
--graph 顯示 ASCII 圖形表示的分支合併歷史。
--pretty 使用其他格式顯示歷史提交資訊。可用的選項包括 oneline,short,full,fuller 和 format(後跟指定格式)。
--oneline --pretty=oneline --abbrev-commit 的簡化用法。