diff --git a/.claude/skills/commit/reference.md b/.claude/skills/commit/reference.md index f8fd8ec..ce0dd41 100644 --- a/.claude/skills/commit/reference.md +++ b/.claude/skills/commit/reference.md @@ -76,10 +76,26 @@ git rebase --continue ``` -全ての競合が解消されたらプッシュする.リベース後は履歴が書き換わるため `-f` オプションが必要になる. +**AI 補助によるコンフリクト解消** + +Claude Code にコンフリクトを解消させる場合は,衝突の種類に応じて進め方を変える. + +- **自明・テキスト的な衝突**(import の競合,隣接行の変更など,双方の意図が両立するもの) + - AI が解消してよい.人間は解消結果の要点を確認するだけでよい. +- **意味的な衝突**(両側がロジックを非互換に変更しているもの) + - AI に単一の解決結果を提示させて追認してはならない.AI は以下を提示し,人間が選択する. + - 両側が各々何をしたかったか(自分の Issue と,相手のコミット・Issue の目的) + - 解決候補を 2 つ以上と,各案を採った場合の帰結 + - 影響範囲と壊れうる箇所 + +解消後は衝突の種類によらず,必ずテスト(`/implement` の Tester)と作者による Phase 1 動作確認を行う.人間の判断は「どの意図が正しいか」を,テストは「実際に動くか」を担保するものであり,どちらか一方を省略してはならない. + +**プッシュ** + +全ての競合が解消されたらプッシュする.リベース後は履歴が書き換わるため通常の push は拒否されるが,他メンバーが push 済みの履歴を誤って上書きしないよう,`-f` ではなく `--force-with-lease` を用いる(自分が最後に fetch した時点のリモート状態と一致する場合のみ上書きし,ズレていれば拒否される). ```bash -git push -f origin feature/new-function +git push --force-with-lease origin feature/new-function ``` ### 間違えて main にコミットしてしまった場合