git-diff: 行の順序を考慮しない 質問する

git-diff: 行の順序を考慮しない 質問する

リポジトリ内にソフトウェア プログラムによって生成されたファイルがあります。

このプログラムは、そのファイルの行の順序を変更することがありますが、行の順序は重要ではないため、これはそれほど重要ではありません。問題は、git-diff を実行するときに、実際に何かが変更されたかどうかを確認するのが非常に難しいことです。

行の順序を考慮しない diff を実行する方法はありますか? または、git-diff で不可能な場合は、思いつくシェル コマンドはありますか?

ありがとう!

ベストアンサー1

結局のところ、コミットする前にこのコマンドを手動で実行して、ファイルが実際に変更されたのか、それとも単に行の順序が変更されただけなのかを確認します。そのための git フックを設定するかもしれません。

diff -wB <(sort file.txt) <(git show HEAD:file.txt | sort -)

このコマンドは、行の順序を考慮せずに、作業ディレクトリ内のファイルとブランチの最後のコミット内のファイルを比較します。

私の場合は、-wと を使用して-B、プログラムによって追加される空白と行を無視します。 出典man diff:

   -w, --ignore-all-space
          ignore all white space
   -B, --ignore-blank-lines
          ignore changes whose lines are all blank

おすすめ記事