仕様と根拠
読み取る形式
git diff --name-status は、各ファイルを「状態の文字、タブ、パス」の行で出力します。状態は A(追加)・C(コピー)・D(削除)・M(変更)・R(名前変更)・T(種類変更)・U(未マージ)・X(不明)で、C と R は類似度のスコアが続き、旧パスと新パスがタブで区切られます。この道具はこの形を読んで、パスをキーに 2 つを突き合わせます。
突き合わせ方
名前変更とコピーは新しい側のパスをキーにします。同じパスが両方にあれば、状態が同じか違うかを見て「両方で同じ状態」「両方で変更・状態が違う」に分け、片方だけにあるものは A のみ・B のみとします。状態の文字が違う組み合わせ(片方が削除、もう片方が変更など)は、統合で衝突しやすいので警告します。
根拠にした仕様・資料
| 仕様・資料 | 確認日 | 使った箇所 |
|---|---|---|
| git-diff ドキュメント(--name-status・raw 出力形式) | 2026年10月29日 | 状態文字 A/C/D/M/R/T/U/X。C・R はスコア付きで旧パス・新パスがタブ区切り。--name-status の行例そのものはページになく、raw 形式の記述からの解釈。WebFetch で確認 |
指摘の段階
- エラー: 仕様に反していて、正しく読めない・処理できない入力です。
- 警告: 読めるものの、仕様の推奨に反する・矛盾する・意図と違う結果になりやすい入力です。
- 情報: 誤りではありませんが、知っておくとよい扱い(読み飛ばした部分や解釈)です。
入力の扱い(送信しない仕組み)
処理はすべてお使いのブラウザの中で行います。処理の本体はこのサイトから配信する小さなスクリプト(/app.js)で、外部のサービスやライブラリを読み込みません。ページはブラウザに通信を禁止させる設定(Content-Security-Policy の connect-src)つきで配信しており、入力した内容がサーバーや第三者へ送られることはありません。ファイルを選んだ場合も、端末の中で読み込むだけです。
このツールでできないこと(制約)
- --name-status の出力はファイル名と状態だけで、変更された行の内容は含みません。同じファイルを両方で変えていても、行が衝突するかどうかは判定できません。
- パスは新しい側のキーで突き合わせるため、片方で名前変更、もう片方で旧パスを変更した場合は、別のパスとして並びます。警告の対象にならないことがあります。
- git の core.quotePath による引用符つきのパスは展開せず、そのままの文字で比べます。-z の出力(NUL 区切り)には対応していません。
ご利用にあたって
- この比較は衝突の見当をつけるためのものです。実際の衝突はマージしてみないと分かりません。
- ブランチ名・ファイル名は端末の外へ送信されませんが、貼り付ける画面の取り扱いには注意してください。