2015-10-15 7 views
29

コードベースを使って空白の奇妙さを修正してインデントなどを修正していますが、空白の違いを無視して、変更されたすべてのファイルの相違点を表示するには、git diff -wを実行しています。問題はこれが実際に無視されていないということです。すべて空白の相違 - 少なくとも何かは単に空白の相違とみなされます。例えば、git diff -wコミットとコミットの間でgit-diffを使って*すべての空白が変更されないようにする

-"Links": 
-{ 
- 
- "Thermal": 
- 
-{ 
- 
+ "Links": { 
+ "Thermal": { 

から次の出力では、あなたは私だけ

  1. 余計な空白行を削除し、
  2. は、行の最後に中括弧を入れていることがわかりますその値は、彼らが開き、

コンテキストに合わせてインデントキーは最初に答えを出すかもしれないように見えましたが、2つの具体的なファイルの間の違いを扱っていません。 コミットです。検索で見つかったものはすべて死んでしまった。たとえば、this questionは差異を表示せずにマージすることを意味し、this questionは単語レベルの違いを表示するなどの処理を行います。

答えて

24

おそらくもっと良い答えがありますが、私が今までに見つけた最良の解決策はこれです。

まず、Gitが現在使用している「空白」の定義を制御する必要があります。

[core] 
    whitespace = -trailing-space,-indent-with-non-tab,-tab-in-indent 

次が含まれるように、プロジェクト内の.gitconfigを作成または編集するには、使用される単語の定義を制御する必要があります。代わりにちょうどgit diff -wを使用しての、--word-diff-regex=[^[:space:]]を追加します。

git diff -w --word-diff-regex=[^[:space:]] 

あなたはまだ(私の場合、私は空白の違い以外には違いががないことを確認しようとしているので、)がない状況を、表示されます役に立ったあなたは

git diff -w -U0 --word-diff-regex=[^[:space:]] 

、そのように、あなたのコンテキストの0ラインを与えることにGitを伝えるために-U0を使用することができますが、あなたはまだかなりの文脈のような出力が得られますが、それはまだすべての変更を見よりもはるかにましです注意深く手動で空白の変更のみを行うようにしてください。この質問は、最初に答えを提供するかもしれないことのように見えた

コミット間

+1

@Torek - さらに別のGitの良さ。なぜ地獄では、すべての空白なしでそれをdiffするのが難しいのですか?私はWindowsマシン上でVisual StudioプロジェクトファイルのPRを評価しようとしています。 CR、LF、またはCRLFの違いは気にしませんが、それはGitが私の端末をいっぱいにしているのです。 – jww

9

はのgit-diffを持つすべて空白の変更を無視するが、それはない2つの特定のコミットの間に2つの特定のファイル、間の違いを扱っています。検索で見つかったものはすべて終わりでした....

Gitは間違った仕事のツールなので、問題があると思います。それはタスクを簡単にするものではなく、ツールに適応するための降伏は間違ったアプローチです。ツールはあなたのために働くはずであり、の逆はではありません。

2番目のクローンを実行して、問題の開始リビジョンをチェックアウトします。次に、あなたの現在のリビジョン:diff -bur --ignore-all-space <dir1> <dir2>を使用してそれらの上で定期的なdiffを実行します。ここで

some of the options for diffのBitbucketユーザーの場合

-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 
0

は、このために提案された修正がありますが、それはまだ符号化されておらず、おそらく十分な関心があるではないだろうまで。あなたはBitbucketサイトに行って、あなたのサポートを示すことができます。私はBitbucketのソリューションを探している間に最初に現在のページを見つけました。この状況に他の人がいたら、hereに行き投票してください!

関連する問題