📚職涯停看聽・知識庫← 總部儀表板
📅最後更新:2026/05/12
📑 目錄

RCF-042 — tzlth-hq Push 前 git stash 前置步驟升規(IMP-132)

類型:規則變更 日期:2026-05-13 觸發條件:條件 1 — 修改 HARD STOP 規則(修改後強制 Git Push 規則 → 強制規則 5) 相關文件

  • CLAUDE.md(主規則 v2.2 → v2.3,強制規則 5 修改)
  • knowledge/improvements.md(IMP-132 狀態 📋 → ✅)

問題背景

cron job(GitHub Actions 排程)持續在遠端更新 scripts/cron-health.md,導致 tzlth-hq repo 的遠端分支經常比本地超前。

現有強制規則 5 要求「push tzlth-hq 前先執行 git pull --rebase origin main」(IMP-110 升規),但未明確要求先 stash 本地 unstaged 修改。當本地有未 commit 的修改(常見:editing CLAUDE.md / improvements.md 等文件後尚未 commit)時,直接執行 git pull --rebase 會觸發:

error: cannot pull with rebase: You have unstaged changes.
Please commit or stash your changes before you pull.

此錯誤在 2026-05-12 同一天連續出現 3 次(Session 151 歸檔、Session 152 批次歸檔、Session 收尾),確認為系統性問題而非偶發事件(IMP-132 出現次數累積至 3,觸發 ≥ 2 升規閾值)。


考慮過的方案

方案 描述 優點 缺點 採用?
方案 A(維持現狀) 只提示 git pull --rebase,遇到錯誤時臨場 stash 規則簡單 每次 push 都可能發生衝突,需臨場診斷,增加 push 失敗風險 ❌ 未採用
方案 B(預防性 stash) git stash → git pull --rebase → git stash pop 寫為標準 SOP 預防性處理,消除衝突風險;即使無 unstaged 修改也可安全執行(空 stash 不影響) 多兩步指令 ✅ 採用
方案 C(cron 停用) 停用更新 cron-health.md 的 cron job 根除衝突來源 喪失 cron job 健康監控功能;不值得 ❌ 未採用

最終決策

採用方案 B:將 git stash → git pull --rebase origin main → git stash pop 寫入主 CLAUDE.md 強制規則 5,取代原本只有 git pull --rebase origin main 的寫法。

選擇理由:

  1. git stash 在無 unstaged 修改時安全執行(不影響工作狀態),無副作用
  2. 將「發現衝突→診斷→修復→重試」改為「預防性一步」,符合「最小化人工操作」原則
  3. 根因(cron job 更新 cron-health.md)是預期行為,不應停用;正確解法是 push 流程適配這個現實

影響範圍

影響類型 具體項目
修改文件 CLAUDE.md L71 — 強制規則 5 新增 stash 前置步驟;版本號 v2.2 → v2.3;最後更新日期 2026-05-11 → 2026-05-13
修改文件 knowledge/improvements.md — IMP-132 狀態 📋 升規待確認 → ✅ 已升規;header 最後更新行更新
新增文件 knowledge/decisions/RCF-042-imp132-tzlth-hq-push-stash-upgrade.md(本文件)
觸發部門同步 無(純 Git Push 操作規則,不涉及部門 CLAUDE.md 收尾規則等共用章節)
影響的 SKILL 無(SKILL 本身不含 git push 步驟,Claude 執行 push 時查 CLAUDE.md 強制規則)

驗證方式

下次需要 push tzlth-hq 時,Claude 自動執行的完整指令序列應為:

git stash
git pull --rebase origin main
git stash pop
git add <files>
git commit -m "..."
git push origin main

若再次出現「cannot pull with rebase: unstaged changes」錯誤 = 規則未被遵守,需查照強制規則 5 是否在當次執行中被跳過。

成功標準:tzlth-hq push 不再需要臨場診斷 rebase 衝突,改為預防性流程。

← 返回 決策記錄