Git 內容自動夜間 Commit
用途
每晚自動偵測指定目錄的內容變更,組出語意化 commit message 後 push,讓排程任務寫入的內容不會因為忘記 commit 而版本不同步。
何時用
- 適合:有排程任務(如晨報、發票辨識、電子報 ingestion)持續寫入 Git repo、想每晚統一 commit 加 push 的情境;創作者每天寫稿存進 Git 但常忘記 commit 時。
- 不要用:需要審查的程式碼變更不要自動 commit——這個提示語設計給「內容/資料寫入」場景,不適合程式碼;或者你需要細粒度的 commit 記錄(每個動作一個 commit),自動化合併成一個夜間 commit 會讓 git log 變難讀。
Prompt
text
請執行夜間 Git 內容 Commit 流程:
今日日期:{{TODAY(格式 YYYY-MM-DD)}}
監控目錄:{{監控目錄(如 assets/0-foundation/inbox/ 或 docs/weekly/)}}
Repo 根目錄:{{Repo 根目錄絕對路徑}}
步驟:
1. 執行 git status,檢查 {{監控目錄}} 內是否有未 commit 的變更
- 無變更:輸出「{{TODAY}} 無內容變更,跳過 commit」後結束
2. 有變更時:
a. 只 add 指定的 {{監控目錄}}(不要 git add -A 把其他東西拉進來)
b. 組語意化 commit message,格式:
content({{目錄簡稱}}): {{TODAY}} 自動同步 — 新增X/更新Y/刪除Z 個檔案
(例:content(inbox): 2026-06-03 自動同步 — 新增3/更新1/刪除0 個檔案)
c. git commit -m "{{message}}"
d. git push
3. push 失敗時:
- 不要強制 push
- 輸出:「Push 失敗,請手動執行:git push origin main」
- 把失敗記錄 append 到 {{Repo根目錄}}/logs/nightly-commit-errors.log
限制:只操作 git,不修改任何檔案內容。範例 / 變數
- 填好變數:TODAY 填今日日期、監控目錄填
assets/0-foundation/inbox/、Repo 根目錄填/Users/MH/Documents/git_saas/content-asset-system,跑完自動 commit 今天的 inbox 變更。 - 變體(多目錄版):監控目錄改成清單(
inbox/ weekly/ invoices/),步驟 2a 對每個目錄分別 add,讓 commit message 列出各目錄各有幾個變更。 - 變體(搭配排程):把這個提示語存成 Skill,用 Claude Routines 設定每晚 23:30 自動觸發,完全不需要記得手動跑。
🎯 範例輸出(實測)
在 Claude Code 跑這句、把
{{變數}}填成「TODAY:2026-06-04;監控目錄:assets/0-foundation/inbox/;Repo 根目錄:/Users/MH/Documents/git_saas/content-asset-system」的結果:
點開看 AI 實際輸出
步驟 1 — git status 檢查
text
$ git status assets/0-foundation/inbox/
On branch main
Changes not staged for commit:
modified: assets/0-foundation/inbox/newsletters/.ingested-threads.yaml
modified: assets/0-foundation/inbox/daily-briefing/2026-06-04.md
Untracked files:
assets/0-foundation/inbox/newsletters/tldr-ai-2026-06-04.md
assets/0-foundation/inbox/newsletters/the-rundown-2026-06-04.md有變更,繼續執行。
步驟 2 — 只 add 指定目錄
text
$ git add assets/0-foundation/inbox/變更統計:新增 2 / 更新 2 / 刪除 0 個檔案
commit message 組成:
text
content(inbox): 2026-06-04 自動同步 — 新增2/更新2/刪除0 個檔案步驟 2c — commit
text
$ git commit -m "content(inbox): 2026-06-04 自動同步 — 新增2/更新2/刪除0 個檔案"
[main a3b7c2d] content(inbox): 2026-06-04 自動同步 — 新增2/更新2/刪除0 個檔案
4 files changed, 87 insertions(+), 3 deletions(-)步驟 2d — push
text
$ git push
Everything up-to-date → push 成功執行完成:夜間同步完成,4 個變更已 commit + push 到 main。
💡 實測心得:pre-commit hook 如果有設定(如 yamllint、EOF 修正),夜間自動 commit 也會觸發,可能因為自動整理的 YAML 格式不符 lint 規則而失敗;建議測試一次「含 hook 的 commit 流程」確認不會卡關,或把夜間 commit 的目錄排除在 lint 掃描範圍外。
延伸
重點來了:夜間 commit 最常踩的坑是 git add -A 把不想進版控的暫存檔或 .env 也拉進來。這個提示語明確要求「只 add 指定目錄」,就是為了避免這個問題。
如果你有多個排程任務寫入不同目錄,可以對每個目錄設定獨立的夜間 commit,commit message 會更清楚,git log 也更好追蹤。