2017-12-11 5 views
0

(タイトルについては分かりませんが、誰かがそれをより適切なものに編集するのを手伝ってください)どうすればdiffを生成するのを防ぐことができますか?

Gitは自動的に最小の差分を生成しますが、これは記憶には適していますが、読みやすくするために2行を使用します。

私のコーディングスタイルでは、gitが自動的に生成するdiffは、同じインデントの異なるブロックの閉じ括弧を変更しないで処理することがよくあります。例:

-if (true) { 
- // Do something 
+foreach (int i in array) { 
+ // Do something else 
} 

これは、周囲に修正が加えられていると、読みにくいことがあります。

-if (true) { 
- // Do something 
-} 
+foreach (int i in array) { 
+ // Do something else 
+} 

基本的には「変わらない」行が(空行、閉じ括弧、そして} else {のような他の一般的なライン)の間にありますならば、新しい行を追加し、古い行を削除します。私はそれだけで次のようになりたいと思いますそれらも削除し、それに応じて新しい行に追加してください。

は、だから私はgit add file --patchを使用しようと手動で自分の欲望にそれを変更しましたが、エディタを閉じた後、gitが

何を達成することが可能である(そのままブレースを閉じると)、元の最小限の差分に私の変更を元に戻しI 2つの別々のコミットを作成せずにしたいですか?

+0

はい、しかし、あなたは 'diff'のソースコードを変更する必要があります。 –

+2

Gitはdiffを使ってファイルをまったく使用しません。パックファイル内でバイナリデルタフォーマットを使用します。緩い(アンパックされた)オブジェクトは分離されず、単にzlibで圧縮されます。 'git diff'を実行したときに表示されるものは、' git diff'によって一時的に計算され、再び破棄されます。 – torek

+1

まあ...私は完全に間違っています。今私はgitがdiffをまったく格納していないことを知っています。私が本当に探しているのは、より良い "diffジェネレータ"です。多分、削除/追加のために別々のコミットを書く方が良いでしょう。 – RadarNyan

答えて

0

閉じ括弧を含む行が異なるため、これは可能ではないと思います。開いているブロックが異なるので、終了ブロックもまたハンクに含める必要があることを知るためには、diffがコードを理解できる必要があります。そこにかもしれないそれを行うことができますdiffツールがあり、あなたがそれを見つけることができる場合git diffgit diff --ext-diffで外部差分ヘルパーとして使用することができます。 The Git Book has examples of changing the behavior of git diff using git attributes


視覚的な差分ツールを使用して、わかりやすいように、変更を並べて見ることができます。 git difftoolでこれを行うことができ、外部のdiffビューアが起動します。たとえば、あなたの変更はMeldを使用して次のようになります。 Meldは非常に原始的ですが、そこには他にも多くのツールがあり、git difftoolはインストール後にそれらの多くを使用する方法を知っています。

enter image description here

多くのコードエディタとIDEは、自分があなたに同じ明快さを与える差分ツールに組み込まれています。 Atom editorsplit-diff packageは次のとおりです。

enter image description here

関連する問題