Git diffエンジンは、ファイル全体が変更されていないのに変更されていると見なしています。たとえば、次のコミットを使用します。 https://github.com/etiago/phpvirtualbox/commit/626e09958384f479f94011ac3b8301bd497aec51
ここでは、ファイルlib/vboxconnector.phpに2807個の追加と2778個の削除があることがわかります。さらに、手動でgit diffを実行すると、実際には、ファイル全体が削除(マイナス記号)として取り込まれ、新しいファイル全体が追加として取り込まれます。ただし、ファイルには多くの共通点があり、Gitは単に無視しました。
同一ファイルのファイル全体を返すdiff を見ましたが、2つのコミット間に空白の変更が存在しないため、そうではありません。
さらに、ファイルの2つのコミット(626e09958384f479f94011ac3b8301bd497aec51
および626e09958384f479f94011ac3b8301bd497aec51^1
)Meldを使用してそれらを比較すると、正しい差分分析が得られます。
vboxconnector.php_1
では、すべての行がCR
LF
シーケンスで終了します。
vboxconnector.php_2
では、すべての行がLF
だけで終了します。
したがって、ファイルのすべての行が変更されています。
git diff --ignore-space-at-eol
を使用してみてください。
この質問への回答 で役立つ情報を見つけることもできます。