aic がコンフリクトを解決する流れ
resolve はワークフローであり、魔法の杖ではありません。aic はコンフリクトした各ファイルを巡り、修正を提案し、毎ステップで承認のために止まります。
- 検出
aic resolveはリポジトリの状態を読みます。マージ中で未解決のファイルがあれば、それを一覧表示します。 - ファイルごとに解決 各ファイルについて、aic はコンフリクトした内容をモデルに送り、マーカーのないバージョンを受け取ります。マーカーが漏れていれば、一度再試行します。
- diff を確認 aic はすべての提案された解決を1つの diff にまとめます — マーカーは除去、両側は調和 — 何が変わるか正確に分かります。
- ファイルごとに承認 各ファイルには独自の
apply?プロンプトがあります。yes なら aic は解決を書き込んでステージします。no ならそのファイルは触られません。 - 完了 未解決がなくなると、aic はマージの
--continueを実行します。途中のブロッカーは明確な案内とともに報告され、謎のカウントではありません。
2つの入り口
コマンドを覚える必要はありません。明示的な動詞と、忘れた時にキャッチするガードがあります。
-
aic resolve明示的な動詞。リポジトリがマージ中ならいつでも実行でき、aic は上の検出ステップから引き継ぎます。 - コミットガード コンフリクトしたリポジトリで素の
aicを実行すると、aic はそれに気づき、resolve への引き継ぎを提案します。さらに深いガードが、コンフリクトマーカーを含むコミットをブロックします。親しみやすい入り口、そして安全網。
あなたの許可なくして何も適用されない
要点はこれ:aic は提案し、あなたが決める。あなたが見て承認していない解決を書き込むことはありません。
aic があなたに残すもの
先に正直に言っておきます。ツールがどこまでできて、どこからはあなた次第なのかを把握するためです。これらは v1 の制限です。
- マージコンフリクトのみ aic が扱うのはコンフリクトしたマージ状態。進行中の rebase や
amは v1 では検出されて拒否されます — 完了または中止してから resolve してください。 - 自動解決できないコンフリクトも バイナリファイル、巨大ファイル、delete/modify コンフリクトは理由付きでスキップされます — aic は手動で解決できるようそれらを指し示します。
- 完了はオールオアナッシング どのみち
--continueは未解決のパスがあるとブロックするので、残り1つのブロッカーが完了を止めます。aic の案内は何が残っているか正確に伝えます。
要するに
aic resolve はコンフリクトしたファイルを読み、実際に確認できる解決を提案し、あなたが承認したものだけを書き込み — それからマージを完了します。aic がコミットに使うのと同じ「diff を読み、修正を起草し、出荷する」ループが、git の最も見苦しい部分に向けられています。