「B
壊れたペア」ステータスは、出力に直接表示されることはありません。オプション( )も使用する場合--name-status
に、オプションの引数としてのみ役立ちます。これをフィルターとして使用すると、コンテンツの少なくとも一定の割合が削除または変更されたファイルが選択されます。--diff-filter
-B
--break-rewrites
この「改行」は、主に差分テキストの生成方法を変更することであるため、あまり役に立ちません--name-status
。追加行と削除行を生成する代わりに、差分出力からコンテキスト行 (変更されていない行) を削除します。差分アルゴリズムがたまたま見つけた「ランダムな」共通サブシーケンスの周りに必要です。
git init broken-pairs
cd broken-pairs
nums() { seq "$1" "$2" 2>/dev/null || jot $(($2 - $1 + 1)) "$1"; }
nums 0 99 > a
nums 100 199 > b
git add a b
git commit -ma=0-99,b=100-199
nums 200 299 > a
{ nums 100 149; nums 350 399; } > b
git diff --name-status --diff-filter=B # selects nothing
git diff --name-status --diff-filter=B -B # M100 a
git diff --name-status --diff-filter=B -B/50 # M100 a M050 b
「X
不明」ステータスが実際に表示されることはありません。表示される場合は、マージ解除、追加、削除、変更されていないパス名、またはそのタイプが変更された (事実上: 変更されていない) パス名が予期せず内部差分機構のコアになったことを意味します。エラーfeeding unmodified <pathname> to diffcore
も生成されます。
古い操作モードから残っているようです。