5

git diff通常の行ごとの差分を と組み合わせたいと思いgit diff --word-diffます。行ごとの差分の問題は、1 つまたは 2 つの単語を変更して行をほとんどそのままにしておくと不要になることです。チャンクが粗すぎるためです。一方、行全体を変更して を使用する--word-diffと、差分アルゴリズムが混乱し、信じられないほど紛らわしい差分を吐き出すことがあります。多くの単語が挿入および削除されて、ある行が別の行に「モーフィング」されます。

gitこれについてスマートであるべきことを指定する方法はあります--word-diffか?実際にそうすることが理にかなっている場合にのみ(もちろん、行ごとに)?

4

1 に答える 1

5

git diff --word-difforについて私が見つけた最も賢いものは、git に付属git diff --color-wordsする事前定義されたパターンです ( orで使用されています)。それらは完璧ではないかもしれませんが、AFAICT で非常に良い結果が得られます。--word-diff-regexdiff.wordregex

定義済みの diff ドライバーのリスト (すべて定義済みの単語の正規表現もあります) は、 のドキュメントに.gitattributes記載されています。さらに次のように述べられています。

.gitattributes を介して、属性メカニズムでこれを有効にする必要があります

したがってpython、すべてのファイルのパターンを有効に*.pyするには、リポジトリ ルートで次のコマンドを発行できます。

echo "*.py diff=python" >> .gitattributes

さまざまなプリセット パターンが実際にどのように見えるかに興味がある場合は、git のソース コードを見てください。

于 2015-09-06T20:03:44.947 に答える