Git提交歷史查看與日志篩選的全攻略
一、基礎(chǔ)用法:git log
克隆示例倉(cāng)庫(kù)并進(jìn)入目錄:
$ git clone https://github.com/schacon/simplegit-progit $ cd simplegit-progit
直接運(yùn)行 git log,默認(rèn)會(huì)按 倒序 列出所有提交:
$ git log
commit ca82a6dff817……
Author: Scott Chacon <schacon@…>
Date: Mon Mar 17 21:52:11 2008 -0700
Change version number
commit 085bb3bcb6……
Author: Scott Chacon <schacon@…>
Date: Sat Mar 15 16:40:33 2008 -0700
Remove unnecessary test
commit a11bef06a3……
Author: Scott Chacon <schacon@…>
Date: Sat Mar 15 10:31:28 2008 -0700
Initial commit
每條記錄包括提交哈希(SHA-1)、作者、日期和提交信息。
二、顯示補(bǔ)丁與統(tǒng)計(jì)
2.1-p/--patch:顯示補(bǔ)丁
跟隨每次提交后直接輸出該提交所引入的 diff:
$ git log -p -2
僅顯示最近兩次提交及其完整代碼變更。
2.2--stat:文件修改統(tǒng)計(jì)
在每次提交下方匯總修改文件列表及插入/刪除行數(shù):
$ git log --stat
輸出示例:
Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
若只想看統(tǒng)計(jì)匯總行,可用 --shortstat。
三、多樣化輸出格式:--pretty
3.1 預(yù)定義格式
oneline:每個(gè)提交一行,配合 --abbrev-commit 可更簡(jiǎn)潔:
$ git log --pretty=oneline
short/full/fuller:分別對(duì)應(yīng)不同程度的信息豐富度。
3.2 自定義格式
使用 format: 自定義輸出字段,常用占位符如下:
| 占位符 | 含義 |
|---|---|
%H | 完整提交哈希 |
%h | 簡(jiǎn)短提交哈希 |
%an | 作者名稱 |
%ae | 作者郵箱 |
%ar | 作者日期(相對(duì),如 “2 weeks ago”) |
%cn | 提交者名稱 |
%ce | 提交者郵箱 |
%cr | 提交者日期(相對(duì)) |
%s | 提交信息摘要 |
示例:
$ git log --pretty=format:"%h - %an, %ar : %s"
四、ASCII 圖形化分支:--graph
在日志前加上分支/合并結(jié)構(gòu)的 ASCII 圖示:
$ git log --pretty=format:"%h %s" --graph
示例輸出:
* 2d3acf9 Ignore errors from SIGCHLD on trap * 5e3ee11 Merge branch 'master' of … |\ | * 420eac9 Add method for current branch * | 30e367c Timeout code and tests ...
五、限制與過(guò)濾日志
5.1 限制條目數(shù)量
-n 或 -<n>:僅顯示最近 n 條提交
$ git log -3 # 最近三次
5.2 時(shí)間范圍
--since/--after:指定起始日期--until/--before:指定結(jié)束日期
支持多種格式,如 "2025-01-15"、"2 weeks ago"。
$ git log --since="2 weeks"
5.3 作者/提交者過(guò)濾
--author="用戶名或郵箱"--committer="提交者"
$ git log --author="Junio C Hamano"
5.4 提交信息關(guān)鍵詞:--grep
僅顯示提交信息中匹配給定正則/字符串的記錄:
$ git log --grep="bugfix"
添加 --all-match 要求同時(shí)匹配多個(gè) --grep 或 --author 條件。
5.5 “挑選”改動(dòng)內(nèi)容:-S
查找改動(dòng)中添加或刪除某個(gè)字符串的提交:
$ git log -S function_name
5.6 按路徑篩選
僅顯示對(duì)指定文件或目錄有改動(dòng)的提交:
$ git log -- path/to/file
記得在路徑前加 -- 來(lái)區(qū)分選項(xiàng)與路徑。
六、實(shí)戰(zhàn)示例
查詢 2008 年 10 月由 Junio Hamano 修改 t/ 目錄下文件的非合并提交:
$ git log \ --pretty="%h - %s" \ --author="Junio C Hamano" \ --since="2008-10-01" \ --before="2008-11-01" \ --no-merges \ -- t/
輸出最近符合條件的若干提交。
七、常用選項(xiàng)速覽

八、總結(jié)
git log 是查看、分析項(xiàng)目歷史的核心利器。掌握補(bǔ)丁輸出、統(tǒng)計(jì)信息、格式定制、圖形化分支、時(shí)間/作者/內(nèi)容過(guò)濾等功能后,你可以:
- 快速定位引入某行代碼的提交
- 按日期范圍或作者篩選日志
- 以簡(jiǎn)潔或自定義格式輸出,便于腳本處理
- 可視化分支與合并結(jié)構(gòu),理清歷史脈絡(luò)
以上就是Git提交歷史查看與日志篩選的全攻略的詳細(xì)內(nèi)容,更多關(guān)于Git歷史查看與日志篩選的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
VSCode設(shè)置默認(rèn)打開(kāi)的瀏覽器的方法
這篇文章主要介紹了VSCode設(shè)置默認(rèn)打開(kāi)的瀏覽器的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
VSCode?搭建?x264?源碼調(diào)試環(huán)境的詳細(xì)步驟
這篇文章主要介紹了VSCode?搭建?x264?源碼調(diào)試環(huán)境的詳細(xì)步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
使用Git實(shí)現(xiàn)revert的完整操作步驟
文章介紹了git revert命令的使用,包括其核心概念、完整操作步驟、進(jìn)階場(chǎng)景以及與git reset的區(qū)別,git revert是一種安全的代碼回退方式,適用于已推送的代碼,通過(guò)生成新的提交來(lái)抵消目標(biāo)提交的修改,保留歷史記錄并便于追溯,需要的朋友可以參考下2026-01-01
回車和換行有什么區(qū)別?我們平時(shí)按下的Enter鍵是回車還是換行
如果用過(guò)機(jī)械打字機(jī),就知道回車和換行的區(qū)別了。換行就是把滾筒卷一格,不改變水平位置?;剀嚲褪前阉轿恢脧?fù)位,不卷動(dòng)滾筒2011-03-03
SpringSecurity框架簡(jiǎn)介及與shiro特點(diǎn)對(duì)比
這篇文章是SpringSecurity框架的入門篇,主要為大家介紹了SpringSecurity框架簡(jiǎn)介及與shiro優(yōu)缺點(diǎn)對(duì)比有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03
VS2019中Git源代碼管理實(shí)現(xiàn)總結(jié)
這篇文章主要介紹了VS2019中Git源代碼管理實(shí)現(xiàn)總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
基于 Serverless +企業(yè)微信打造 nCoV 疫情監(jiān)控小助手
這篇文章主要介紹了基于 Serverless +企業(yè)微信打造 nCoV 疫情監(jiān)控小助手,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02

