在日常開發中,我們最常輸入的兩個指令之一,就是
git status
(現在專案長什麼樣)git log
(過去發生過什麼事)前幾天我們已經學會這兩個指令的基本用法,今天要進一步挖掘:
👉 如何用這兩個指令「快速找出問題、還原真相」,變身專案的數位考古學家。
git status
進階用法:掌握現場狀況它是開發者的「即時儀表板」。
但除了顯示「有哪些修改沒 commit」,其實還能更細緻地呈現狀態。
git status -s
想看重點不看長篇說明?
使用 -s
(或 --short
):
git status -s
範例輸出:
M index.html
A main.js
?? newfile.txt
符號 | 意義 |
---|---|
M |
修改(Modified) |
A |
新增到暫存區(Added) |
?? |
未追蹤(Untracked) |
這種格式在日常開發中超方便,特別是你不想被滿滿的英文敘述淹沒時。
git status -v
v
(或 -verbose
) 會顯示實際變更的內容(diff),可直接看到每個修改的細節:
git status -v
輸出示意:
diff --git a/app.js b/app.js
index 1a2b3c4..5d6e7f8 100644
--- a/app.js
+++ b/app.js
@@ -10,6 +10,7 @@ function init() {
console.log("Start app");
+ console.log("New log added!");
}
當你準備 commit 前,這是最後一次確認「到底改了什麼」的最佳時機。
git log
進階用法:穿越歷史的時光機如果說 git status
是「現場觀察」,
那 git log
就是「時光旅行」。
它讓你查看整個專案的歷史記錄,追蹤每一次修改背後的故事。
git log --oneline --graph --decorate
這是工程師界的經典組合技:
git log --oneline --graph --decorate --all
輸出範例:
* e8a1d0f (HEAD -> main, origin/main) Fix typo in README
* 5a9d3b7 Add API handler
* 7b4a1c2 Merge branch 'feature/login'
|\
| * 12adf9a Add login form
| * 56b1e0a Update login validation
* | 2a3e5f6 Refactor user model
|/
* 0c1b2d3 Initial commit
這個畫面是不是超像「地鐵圖」?
每個分支的合併、歷史脈絡一目了然
git log --author="Sean"
git log --author="Sean" --oneline
可以篩出由特定開發者提交的歷史。
想知道「某人到底改了哪些東西」時非常實用(尤其是 Code Review 前)。
git log <filename>
git log --oneline src/utils/helper.js
這能幫你追出「這個檔案是什麼時候被誰改壞的」。
(別笑,這句話每個工程師都講過。)
git log -L
如果你只想看某個函式的變化,可以用 -L
參數。
git log -L :loginHandler:src/auth.js
它會顯示 loginHandler
函式從出生到現在的完整演化史。
對 Debug 非常有幫助!
git log -p
git log -p -2
這會顯示最近兩次提交的實際變更內容(類似 diff)。
非常適合做「版本追蹤」或「問題回溯」。
git log --pretty=format
git log --pretty=format:"%h - %an, %ar : %s"
輸出範例:
a1b2c3d - Sean, 2 days ago : Fix API timeout
f4e5d6a - Mei, 3 days ago : Add user validation
代碼 | 意義 |
---|---|
%h |
短版 commit ID |
%an |
作者名稱 |
%ar |
相對時間(如 3 days ago) |
%s |
提交訊息 |
這個格式超適合產出「變更紀錄摘要」或整合到自動化工具中。
想在所有 commit 訊息裡找特定關鍵字?
git log --grep="bug"
想在所有變更內容中搜尋關鍵字?
git log -S "initApp"
這會找出「新增或刪除包含 initApp
的行」的提交紀錄。
非常適合尋找「某段程式是誰加的、何時被刪」。
目標 | 指令 |
---|---|
簡短顯示變更狀態 | git status -s |
顯示變更內容 | git status -v |
美化 log | git log --oneline --graph --decorate --all |
查特定人提交 | git log --author="name" |
查特定檔案 | git log <file> |
查特定函式演變 | git log -L :func:file |
搜尋關鍵字 | git log --grep="word" |
搜尋程式內容 | git log -S "code" |
git add
其中一個,使用 git status -s
觀察差異。git log --oneline --graph --decorate --all
觀察分支歷史,試著找出最近一次合併的 commit。git log --author="你的名字"
篩選出你自己提交的歷史。git log -L :函式名稱:檔案名稱
查看某個函式的演化歷史。git log -S "程式碼片段"
找出特定程式碼是誰、何時加入或刪除的。我們學會了如何:
git status
檢查「現在」git log
回顧「過去」
git status
是你的現在進度表,git log
是你的時光機。
掌握這兩者,你就能隨時在專案時空中自由穿梭。