做到 Day 22 之後,我已經開始有一套比較固定的 Claude Code 工作流程:
先讀 CLAUDE.md
先規劃
控制修改範圍
修改後自己驗證
但如果之後 Claude Code 一次改很多檔案,還是會遇到另一個問題:
它到底改了什麼?如果改錯了,我要怎麼追?
所以 Day 23 不新增 Web App 功能。
今天要做的是:
把 Git 正式加入 Claude Code 的開發流程裡。
我一開始在專案資料夾輸入:
git status
結果出現:
fatal: not a git repository
(or any of the parent directories): .git
這代表目前的 ai-task-manager 還沒有初始化 Git。
所以我直接在專案根目錄執行:
git init
完成後再輸入:
git status
就看到:
On branch main
No commits yet
代表這個專案已經正式成為 Git Repository。
初始化後,Git 把目前所有尚未追蹤的專案檔案列出來。
例如:
.env.example
.gitignore
CLAUDE.md
app.py
config.py
db.py
models/
requirements.txt
schema.sql
static/
templates/
這些都是 Untracked files。
也就是:
檔案已經存在,但 Git 還沒有正式開始追蹤。
第一次看到這個畫面時,我沒有急著直接 git add .,而是先檢查有沒有不應該進 Git 的檔案。
目前 .gitignore 的內容是:
venv/
.env
__pycache__/
*.pyc
*.log
這些設定主要是在排除:
venv/
→ Python 虛擬環境
.env
→ 真正的環境變數與密碼
__pycache__/、*.pyc
→ Python 執行產生的暫存檔
*.log
→ 測試或執行紀錄
其中最需要注意的是 .env。
因為裡面可能放:
MySQL 帳號
MySQL 密碼
之後的 API Key
這些內容都不應該被 commit。
第一次執行 git status 時,我還看到:
scenario_test.log
這是前面測試留下來的 log 檔,不是專案真正需要的原始碼。
所以 .gitignore 裡的:
*.log
就是用來把這類檔案排除。
加入規則後重新確認,scenario_test.log 就不會再出現在待追蹤清單裡。
真正的:
.env
不能進 Git。
但:
.env.example
可以被追蹤。
它只保留需要哪些環境變數,例如:
MYSQL_HOST=
MYSQL_PORT=
MYSQL_DATABASE=
MYSQL_USER=
MYSQL_PASSWORD=
不放真正密碼。
這樣之後如果換電腦,還是可以知道 .env 需要準備哪些設定。
確認 .gitignore 沒問題後,我把目前整個專案加入 Git,並手動建立第一個 commit:
建立 AI Task Manager 初始版本
這次 commit 並不是代表 Day 23 新增了什麼功能。
它比較像是一個:
專案目前狀態的基準點。
因為這個 Web App 在 Day 1~22 已經做了不少功能,所以我現在才開始使用 Git,就先把目前正常的狀態記錄下來。
目前可以理解成:
Day 1~22 專案內容
↓
git init
↓
建立初始 commit
↓
之後的新修改開始可以被追蹤
建立初始 commit 後,我再讓 Claude Code 幫我檢查 Git 狀態。
這次我刻意限制它只能分析,不可以修改任何東西。
Prompt:
Day 23 要開始把 Git 和 Claude Code 一起使用。
今天不修改 Web App 功能。
請先檢查目前專案的 Git 狀態與 .gitignore,
不要修改任何檔案,也不要執行 git add 或 git commit。
請告訴我:
1. 目前是不是 Git Repository
2. 目前在哪個 branch
3. 工作區有哪些 modified / untracked 檔案
4. .gitignore 是否有忽略:
- .env
- venv/
- __pycache__/
- *.pyc
5. 有沒有看起來不應該 commit 的檔案
6. 目前是否適合建立一個 Day 22 完成後的 commit
7. 如果適合,建議這次 commit 應該包含哪些檔案
今天先分析,
不要執行 git add、git commit,
也不要修改任何檔案。
Claude Code 回覆它只執行了唯讀的 Git 指令,沒有修改檔案,也沒有執行 git add 或 git commit。
它確認目前:
是 Git Repository
branch = main
而且目前只有一個 commit:
66d6cba 建立 AI Task Manager 初始版本
另外也確認:
nothing to commit, working tree clean
也就是目前:
沒有 modified
沒有 untracked
工作區和 HEAD 完全一致
這個狀態對後面使用 Claude Code 很重要。
因為只要之後有新修改,就能清楚看出那一次到底改了哪些東西。
Claude Code 不只是讀 .gitignore,還實際確認忽略規則有沒有生效。
結果:
| 項目 | 結果 |
|---|---|
.env |
已忽略 |
venv/ |
已忽略 |
__pycache__/ |
已忽略 |
*.pyc |
已忽略 |
*.log |
已忽略 |
scenario_test.log 也因為 *.log 規則被排除。
Claude Code 也檢查了目前 Git 已追蹤的檔案。
沒有看到:
.env
venv/
__pycache__/
*.pyc
scenario_test.log
這些不該進 Git 的內容。.env.example 則正常被追蹤。
Claude 還確認:
.env.example 裡的 DB_PASSWORD
只是佔位資料
不是 .env 裡真正的密碼
而且沒有把真正的密碼輸出出來。
這一點也讓我比較放心。
我的 Prompt 裡原本有問:
目前是否適合建立一個 Day 22 完成後的 commit?
Claude Code 的答案是:
不需要
因為目前:
nothing to commit, working tree clean
而且唯一的初始 commit 已經包含 Day 22 更新後的 CLAUDE.md。
所以現在再 commit,也沒有任何新的內容可以記錄。
這次的初始 commit 就已經是目前的基準點。
Day 23 之後,我想把流程固定成:
修改前
↓
git status
↓
確認 working tree clean
↓
讓 Claude Code 規劃 / 修改
↓
git status
↓
git diff
↓
自己測試
↓
確認沒問題
↓
git add
↓
git commit
這裡不用把 Git 想得太複雜。
目前先記住兩個最常用的檢查方式就夠了:
git status
→ 看哪些檔案有變
git diff
→ 看實際改了哪些內容
這樣 Claude Code 說:
我只修改了 app.py
我就可以自己用 Git 再確認一次。
不需要完全依賴它的文字描述。
如果上一輪修改還沒有 commit,又接著讓 Claude Code 改新的東西,之後看 git diff 時就很容易混在一起。
所以我希望之後每完成一個小階段,就先把它整理成一個 commit。
下一次開始時保持:
nothing to commit, working tree clean
這樣比較容易知道目前看到的修改到底是哪一次產生的。
Claude Code 還確認:
git remote -v
目前沒有輸出。
也就是:
現在只有本機 Git
還沒有連到 GitHub
這正好符合今天的範圍。
Day 23 先把本機版本控制建立起來,不處理:
GitHub
Push
Pull
Pull Request
CI/CD
這些可以等之後真的需要再加。
Claude Code 另外提醒,目前初始 commit 的作者是 Git 本機設定裡的:
user.name
user.email
如果想確認,可以輸入:
git config user.name
git config user.email
這只是 Git commit 的作者資訊,和 Claude Code 帳號不是同一件事。
如果目前顯示的就是我想使用的 Git 身分,就不需要修改。
Day 23 我刻意要求 Claude:
不要執行 git add
不要執行 git commit
因為我現在還在熟悉 Git。
目前我比較想維持:
Claude Code
→ 幫我分析 Git 狀態與修改內容
我自己
→ 決定要不要 add / commit
這樣可以先理解每一步發生了什麼,而不是從一開始就全部自動化。
這次可以整理成:
Git Repository ✓
branch = main ✓
初始 commit 已建立 ✓
working tree clean ✓
.env 已忽略 ✓
venv/ 已忽略 ✓
__pycache__/ 已忽略 ✓
*.pyc 已忽略 ✓
*.log 已忽略 ✓
沒有敏感檔案被追蹤 ✓
目前沒有設定 remote ✓
Claude 沒有自行 add / commit ✓
以前我的流程比較像:
Claude Code 修改
↓
我自己測試
↓
繼續下一個功能
現在則多了一層 Git:
修改前確認乾淨
↓
Claude Code 修改
↓
Git 看實際差異
↓
自己測試
↓
建立 commit
↓
再進下一步
Claude Code 負責:
分析
規劃
修改
Git 則負責:
記錄
比較
追蹤
兩個工具做的事情不一樣,但放在一起之後,我對每次修改會更有掌握。
今天沒有新增任何 Web App 功能。
真正完成的是:
把現有專案初始化成 Git Repository
建立第一個基準 commit
確認 .gitignore 正常
確認敏感資料沒有被追蹤
讓 Claude Code 協助檢查 Git 狀態
建立之後的 Git + Claude Code 工作流程
現在開始,每次 Claude Code 修改專案,都可以先用 Git 看實際差異,再決定要不要留下這次修改。
這也剛好接到下一天。
既然 Git 已經能清楚顯示修改內容,下一步就可以把這些差異拿給 Claude Code 檢查:
不要幫我寫新功能,先幫我看看這次修改有沒有問題。