多くのファイルを移動するコミットがgitにあり(Gitはこれらが移動/名前変更であることを認識します)、次にこれらのファイルの一部を大幅に変更した後に別のコミットを行います。
すべてが個々のコミットベースで期待どおりに表示されますが、古いコミットをブランチの最新のコミットと比較すると、git はこれらのファイルの一部を削除してから追加したものとして表示します。
次のコマンドを実行すると、git は名前の変更と変更を正しく認識します。
git log --follow --name-status -M branch -- */fileName
私が次のことをした場合:
git diff --follow -M branch -- */fileName
Git は、ファイル全体が削除されてから再度追加されたことを示しています (赤と緑のテキスト)。
起こっていることは、差分を実行するときに、git がその間のすべてのコミットを通過するのではなく、最初のコミットの内容を最後に直接比較し、ファイルが 1 つのコミットで大幅に変更されたため、元の変更とは見なされないことだと思います.
git へのファイルの古いパスと新しいパスを明示的にリストせずに、変更されたものだけの適切な diff を取得する方法はありますか?