git diff
git diff
是 Git 版本控制系統中用于比較文件差異的核心命令,可以顯示工作目錄、暫存區(Index)和倉庫歷史之間的變化。
通過對比不同版本或狀態
的文件內容,幫助開發者理解代碼變更。
比較工作目錄與暫存區
運行以下命令查看工作目錄中尚未暫存的修改(與最后一次 git add
相比的差異):
git diff
比較暫存區與最新提交
添加 --cached
或 --staged
參數,顯示已暫存但未提交的變更(與最新提交 HEAD
的差異):
git diff --cached
比較工作目錄與最新提交
直接對比工作目錄和最新提交(跳過暫存區):
git diff HEAD
比較兩個歷史提交
通過提交哈希或分支名對比兩個歷史版本。以下命令比較 commitA
和 commitB
的差異:
git diff commitA commitB
比較分支差異
對比兩個分支(如 main
和 feature
)的代碼差異:
git diff main..feature
統計變更行數
添加 --stat
參數僅顯示變更統計(增刪行數)而非具體內容:
git diff --stat
忽略空格變化
使用 -w
參數忽略空格差異,聚焦實質性代碼變更:
git diff -w
輸出差異到文件
將差異結果重定向到文件(如 changes.diff
),便于分享或存檔:
git diff > changes.diff
代碼示例解析差異
以下 Python 腳本模擬 git diff
的部分邏輯,對比兩個文本文件的差異:
import difflibdef compare_files(file1, file2):with open(file1, 'r') as f1, open(file2, 'r') as f2:diff = difflib.unified_diff(f1.readlines(),f2.readlines(),fromfile=file1,tofile=file2)print(''.join(diff))compare_files('old_version.py', 'new_version.py')
典型工作流程示例
-
修改文件后檢查變更
在本地編輯代碼后,立即運行git diff
確認修改內容是否符合預期。 -
提交前的復審
執行git diff --cached
確保暫存區的變更準備就緒。 -
分支合并前檢查
使用git diff main..feature
預覽即將合并的分支差異,避免沖突。 -
版本回退驗證
通過git diff HEAD~1 HEAD
檢查最近一次提交的改動,確認是否需要回退。