34

私は誤って新しい支店を開設しなければならなかったマスターに取り組みました。

ほぼ完全に元の形に戻しました。あるクラスでは、私には理解できない次のような違いがあります。

index 4a9abb8..7c55879 100755
--- a/includes/site.inc.php
+++ b/includes/site.inc.php
@@ -142,11 +142,11 @@ class site{

        public $tplEngine = 'smarty';

-
+       
     private $_productsByType = array();
     private $logger;
-    protected $locale = 'tr_TR';
-
+    protected $locale = 'tr_TR';  
+    

同じものを削除して追加したとのことですが、原則として元のインデックスとの違いはなく、このファイルが変更されたように見せたくありません。

私は何をすべきか ?どうも。

4

8 に答える 8

54

おそらく空白の変更です。を実行できますgit diff -w。これにより、空白の変更はすべて無視されます。

于 2012-07-12T13:30:19.790 に答える
11

スペースを確認してください。置き換えられた「空の」見た目の線には、スペースがあります。また、誤ってタブをスペースに置き換えたり、その逆を行ったりした可能性もあります。

于 2012-07-12T13:18:29.187 に答える
3

スペース/タブに加えて、異なるエディター(Windowsでも)および/または異なるOSから入力された場合の行末は、重複を示す差分行の原因となる可能性があります。LF(linux / Unix)とCRLF(Windows)。

于 2016-12-09T19:09:55.957 に答える
1

スペースまたは行末の違いを確認してください。

于 2012-07-12T13:20:03.430 に答える
1

非空白行の2番目のバージョンには、セミコロンの後にスペースがあり、空白行にも異なる数のスペースがあります。

gitにそのような隠されたスペースを強調表示させるオプションがあるはずです。そうすれば、diffがより有益になりますが、私にはマニュアルがありません。

于 2012-07-12T13:21:55.167 に答える
1

コマンドライン出力に末尾のスペースが表示されない場合があるため、

git difftool

たとえば、vimdiffをdifftoolviaとして指定した後git config --global diff.tool vimdiffが役立つ場合があります。

于 2020-01-16T13:30:40.733 に答える
0

新しいオプションを使用している場合、 git 1.8.4(2013年7月)では空の行のみで変更が表示されなくなることに注意してください。-B

" "は、GNUdiffの" "(空白行を無視する)git diffと同じ、空白行の追加と削除のみで構成されるハンクを無視するモードを学習しました。diff -B

コミット36617af7ed594d1928554356d809bd611c642dd2を参照してください。

このパッチの目的は、GNUdiff-B/--ignore-blank-linesを可能な限り近づけることです。ショートオプションはすでに" break-rewrites"に使用されているため、使用できません。

このオプションを使用すると、git diff空の行を追加または削除するだけのハンクは作成されませんが、「貴重な」変更に十分近い場合は、空の行の追加/抑制が表示されます。

オプションのより詳細な説明は次のとおりです。

  • 本当の変化は面白い
  • 興味深い変更に十分に近い(コンテキストサイズ未満)空白行は、興味深いと見なされます(再帰的定義)
  • 「コンテキスト」行は、興味深い変更の各ハンクの周りに使用されます
  • 2つのハンクが「inter-hunk-context」未満で区切られている場合、それらは1つにマージされます。
于 2013-07-07T10:16:41.687 に答える
0

これは、gitで使用されるデフォルトのdiffアルゴリズムがヒューリスティックを使用して高価なエッジケースを切り取るために発生することがあり、結果が最適ではなくなる可能性があります。

これと同じ問題が発生しました。空白や行末など git diffが原因で説明できませんでした。特定の行が削除されてから再度追加され、3行が削除されて表示されたハンクの一部として表示されていました。 2行追加されましたが、実際には2行が削除され、1行が追加されました。他の差分プログラムでは、予想される2行が削除され、1行が追加されたことが示されました。

これが発生したファイルは4736行(114 KB)で、差分は合計640の挿入と1340の削除であり、問​​題のハンクはファイルの中央にあります。私はそれを同じ問題を示したより小さなテストケースに減らすことができませんでした:どこかでわずかな摂動を加えることで問題はなくなりました。私の唯一の結論は、diffアルゴリズムのヒューリスティックのこれらのエッジケースの1つに陥っていたということです。

Gitは、デフォルト以外に複数の他のdiffアルゴリズムをサポートしています。minimalアルゴリズムを、、、patienceまたはのいずれかに切り替えることでhistogram、この場合の問題は解決しました。

埋め込まれたLibXDiffライブラリのgitソースコードにあるこのコメントも参照してください。

于 2019-10-22T18:40:58.867 に答える