2016-06-28 17 views
0

は、だから私は、私は同じ地域に複数の行を編集していますGitの差分を行うと言うと、私が手:git diffが表示する行を並べ替える方法はありますか?

- Change 1 
+ Change1 
- Change 2 
+ Change2 

私は差分がこのようなものであることを表示順序を変更することができます。

- Change 1 
- Change 2 
+ Change1 
+ Change2 

このようにして、誰かがgithubで以前のものと私のコミットを比較することを決定した場合、私はどのような変更を行ったかをより簡単に示すことができます。

答えて

1

git diffの出力は、順番に動作するため、ソース行の順番によって決まります。したがって、このSO投稿の件名の質問に対する回答(「行を並べ替える方法はありますか?」)は単に「いいえ」です。

あなたの例に基づいて、を対象としています。 (!あなたが例を提供良かっ)

のは、いくつかの実際のgit diffの出力を見てみましょう、とどのようにthese two command line argument control knobsがそれに影響を与える:差分を生成

-Un--unified=n

           普通の3つではなく文脈の行でn行。暗示しているのは-pです。

           

--inter-hunk-context=linesそれにより近接しているハンクを融合、行の指定された数まで、ハンクの間のコンテキストを表示します。

私はちょうどREADMEファイルでリポジトリを作成し、2つの変更を加えました。最初の変更は、1行目にあり、第二は、ここでライン9上にある標準git diff出力です:

$ git diff 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,4 +1,4 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
@@ -6,4 +6,4 @@ git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

はちょうど1に三行からコンテキストの量を減少させるために-Uを使用してみましょう:

$ git diff -U1 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,2 +1,2 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
@@ -8,2 +8,2 @@ the amount of 
context that will 
-be shown. 
+be shown. MOD2 

diffはとなりました。となりましたが、まだいくつかの文脈があります。 (ちなみに、MOD1の「上」のコンテキストはなく、MOD2の「下位」のコンテキストはありません。このファイルには、このポイントの上または下の行がないため通常はgit diffの両方の出力があります1行目の上に3行、9行目の下に3行表示されます.1行目の上に1行、9行目の下に1行あります。ライン・オブ・コンテキストを増加させる)

は差分を融合の副作用を有する:

$ git diff -U4 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,9 +1,9 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

ライン1上の変化以下のコンテキストの4本のラインと、差分塊はライン1を示し、これは5を含む。 9行目の変更の上に4行のコンテキストがあります。 diff塊は5行から9行までを示します。 5行目と5行目は同じなので、2つのハンクが融合します。

または、-U1またはややクレイジー-U0(まったくコンテキスト)を使用していても、私は彼らが参加する時点まで、間で第一及び第二の差分塊を追加コンテキストを追加するために--inter-hunk-contextを使用することができます。 -U1では、効果を得るには--inter-hunk-context=5が必要です。

$ git diff -U1 --inter-hunk-context=5 
diff --git a/README b/README 
index 441ad85..0e6fd7d 100644 
--- a/README 
+++ b/README 
@@ -1,9 +1,9 @@ 
-This is a README file 
+This is a README file MOD1 
which I am using just 
for showing some 
cases of using 
git diff with 
flags to adjust 
the amount of 
context that will 
-be shown. 
+be shown. MOD2 

この時、最初の塊がライン2を介して1を示しており、第二のショーライン9を介して図8は、我々は、5つの以上の行ライン3であるの追加、4、5、6、7、今2人のハンクが隣接して1つのdiffハンクに融合します。

-U0を使用すると、ベースのdiffハンクは1行目と9行目のみであり、2〜8行目(7行目)を追加して結合させる必要があるため、--inter-hunk-context=7が必要です。

使用することができる1つの以上の関連するオプションがあります:

-W

--function-context変更の機能を取り巻く           ショー全体。プレーンテキスト英語が含まれているこの特定のREADMEファイルについては、

、このオプションは、「機能」は、このようなファイルに存在しないとして、有用ではありません。 -Wが動作するかどうかは、ファイルの言語、およびGitがその言語で書かれた関数を認識できるかどうかによって異なります。

関連する問題