私はコードベースを調べ、空白の修正を行い、一般にインデントなどを修正しています。他の変更を誤って行っていないことを確認したいので、すべての違いを表示するためにgit diff -w
を実行しています空白の違いを無視してファイルを変更しました。問題は、これは実際にはall空白の違いを無視していないことです。少なくともwhatI単なる空白の違いであると考えてください。たとえば、git diff -w
からの次の出力では、
-"Links":
-{
-
- "Thermal":
-
-{
-
+ "Links": {
+ "Thermal": {
あなたは私が
この質問 最初は答えを提供するように見えましたが、2つの特定のファイルの違いではなく、2つの特定のcommits。検索で見つかった他のすべても行き止まりでした。たとえば、 この質問 は違いを表示するのではなく、マージに関するものです。 この質問 はWordレベルの違いを表示するなどです。
おそらくより良い答えがありますが、これまでのところ私が見つけた最良の解決策はこれです。
まず、Gitが現在使用している「空白」の定義を制御する必要があります。プロジェクトに.gitconfig
を作成または編集して、含める
[core]
whitespace = -trailing-space,-indent-with-non-tab,-tab-in-indent
次に、使用するWordの定義を制御する必要があります。 git diff -w
を使用する代わりに、--Word-diff-regex=[^[:space:]]
を追加します。
git diff -w --Word-diff-regex=[^[:space:]]
コンテキストがまだ表示されますが、これは(私の場合、違いがないことを確認しようとしているのでexcept whitespace difference)役に立ちません。 -U0
を使用して、Gitに0行のコンテキストを提供するように指示できます。
git diff -w -U0 --Word-diff-regex=[^[:space:]]
ただし、コンテキストにほとんど似た出力が得られますが、すべての変更を注意深く手動で調べて、それらが空白の変更のみであることを確認するよりもはるかに優れています。
無視allコミット間のgit-diffによる空白の変更
この質問は最初は答えを提供するように見えましたが、2つの特定のコミット間の違いではなく、2つの特定のファイル間の違いを扱っています。検索で見つかった他のすべても行き止まりでした....
Gitは仕事にとって間違ったツールであるため、問題を抱えていると思います。タスクを簡単にすることはできません。また、ツールに対応するための譲歩は間違ったアプローチです。ツールはではなく(== --- ==)動作するはずです。
2番目のクローンを実行し、問題の開始リビジョンをチェックアウトします。次に、現在のリビジョンdiff -bur --ignore-all-space <dir1> <dir2>
を使用して、それらに対して定期的なdiffを実行します。
-i, --ignore-case
ignore case differences in file contents
-E, --ignore-tab-expansion
ignore changes due to tab expansion
-Z, --ignore-trailing-space
ignore white space at line end
-b, --ignore-space-change
ignore changes in the amount of white space
-w, --ignore-all-space
ignore all white space
-B, --ignore-blank-lines
ignore changes where lines are all blank