在使用Git管理項目時,提交歷史是非常重要的信息。它記錄了項目從開始到現在的每一次變更,幫助我們追蹤代碼的修改軌跡、定位問題所在、甚至回滾到某個版本。而查看提交歷史的核心工具,就是Git的log命令。掌握log命令的使用,能讓你更清晰地理解項目演進過程。

一、基礎:最簡單的提交歷史查看

直接輸入git log命令,就能看到項目的所有提交記錄。默認情況下,git log會按時間倒序(最新的提交在最上面)顯示每條記錄,每條記錄包含以下關鍵信息:
- 提交哈希值(如a1b2c3d4e5f6):唯一標識這次提交的一串字符(前幾位通常已足夠識別)。
- 作者信息:提交者的名字和郵箱(需配置Git身份才能顯示)。
- 提交日期:提交的具體時間。
- 提交信息:開發者填寫的本次修改說明(建議寫得清晰明瞭)。

示例輸出(簡化版):

commit a1b2c3d4e5f6
Author: 小明 <xiaoming@example.com>
Date:   Fri Sep 1 10:00:00 2023 +0800

    修復登錄頁面輸入框錯位問題

commit b2c3d4e5f6a1
Author: 小紅 <xiaohong@example.com>
Date:   Thu Aug 31 14:30:00 2023 +0800

    添加首頁輪播圖功能

提示:若輸出內容過多,可按q鍵退出查看。

二、常用參數:讓log更實用

直接用git log看完整記錄對初學者可能太繁瑣,掌握以下幾個高頻參數能大幅提升效率。

1. 簡潔模式:--oneline(一行顯示)

如果只想快速瀏覽提交歷史,--oneline參數能把每條提交壓縮成一行,只保留關鍵信息,非常適合快速定位。
命令:git log --oneline
示例輸出:

a1b2c3d 修復登錄頁面輸入框錯位問題
b2c3d4e 添加首頁輪播圖功能
e4f5g6h 初始化項目結構

2. 圖形化分支:--graph(顯示分支合併)

如果項目有多個分支(如主分支master、特性分支feature/login),--graph能以圖形化方式展示分支合併關係,幫助理解項目結構。
命令:git log --graph --oneline
示例輸出(帶分支合併):

*   a1b2c3d 修復登錄頁面輸入框錯位問題
|\  
| * e4f5g6h 臨時添加測試數據(feature/login分支)
|/  
* b2c3d4e 添加首頁輪播圖功能
* e5f6g7h 優化導航欄樣式

說明*表示提交節點,/\表示分支合併方向,|表示分支延續。

3. 查看修改內容:-p--patch(顯示diff)

如果想知道某次提交具體改了哪些代碼(比如修復bug的細節),-p參數能顯示每次提交的代碼差異(diff)。
命令:git log -p
示例輸出(部分):

commit a1b2c3d 修復登錄頁面輸入框錯位問題
Author: 小明 <xiaoming@example.com>
Date:   Fri Sep 1 10:00:00 2023 +0800

diff --git a/src/login.html b/src/login.html
index 1234567..8765432 100644
--- a/src/login.html
+++ b/src/login.html
@@ -10,7 +10,7 @@
     <input type="text" id="username" placeholder="用戶名">
     <input type="password" id="password" placeholder="密碼">
-    <button>登錄</button>
+    <button class="btn-primary">登錄</button>

提示:按q鍵退出查看diff。

4. 按時間過濾:--since/--before(限定時間範圍)

如果只想看最近一段時間的提交(比如最近一週、上個月),可以用--since(包含起始時間)或--before(包含結束時間)參數。
常用時間格式:"1 week ago"(一週前)、"2023-01-01"(具體日期)、"1 day ago"(一天前)等。

示例:查看最近3天的提交
命令:git log --since="3 days ago" --oneline

5. 按作者過濾:--author(指定提交者)

如果團隊多人協作,想單獨查看某個成員的提交記錄(比如小明提交了哪些代碼),用--author參數。
命令:git log --author="小明" --oneline

6. 統計修改行數:--stat(顯示修改統計)

想知道某次提交修改了多少文件、新增/刪除了多少行代碼?--stat參數會顯示這些統計信息。
命令:git log --stat --oneline
示例輸出(部分):

a1b2c3d 修復登錄頁面輸入框錯位問題 | 1 file changed, 1 insertion(+), 1 deletion(-)
b2c3d4e 添加首頁輪播圖功能      | 2 files changed, 5 insertions(+), 0 deletions(-)

三、實用技巧:組合參數更高效

實際工作中,我們經常需要組合參數,滿足複雜需求:
- 同時查看分支+圖形+簡潔模式git log --graph --oneline --all--all表示顯示所有分支的提交)。
- 查看最近5次提交+具體修改git log -n 5 -p-n 5限制顯示5條記錄)。
- 篩選包含特定關鍵詞的提交git log --oneline --grep="登錄"(查找提交信息包含“登錄”的記錄)。

四、總結

Git的log命令是查看提交歷史的核心工具,掌握以下要點就能高效管理項目變更:
- 基礎命令git log:默認輸出完整提交記錄。
- 簡潔模式--oneline:快速瀏覽歷史。
- 圖形化分支--graph:理解分支合併關係。
- 時間過濾--since、作者過濾--author:精準定位目標提交。
- 結合-p--stat:查看具體修改內容或統計信息。

通過不斷實踐這些參數,你能快速從混亂的提交歷史中找到關鍵信息,讓協作和版本管理更順暢!

小夜