から返された情報からデータを収集してきました
git diff <commitId>..<commitId>
そして私は偶然 @@ -1 +1 @@
それが何を言っているのか理解できません。私はGoogleで少し検索しましたが、役に立ちませんでした。
から返された情報からデータを収集してきました
git diff <commitId>..<commitId>
そして私は偶然 @@ -1 +1 @@
それが何を言っているのか理解できません。私はGoogleで少し検索しましたが、役に立ちませんでした。
回答:
統一されたdiff hunk識別子です。これはGNU Diffutilsによって文書化されています。
統一された出力形式は、次のような2行のヘッダーで始まります。
--- from-file from-file-modification-time +++ to-file to-file-modification-timeタイムスタンプ
2002-02-21 23:30:39.942229878 -0800
は、日付、小数秒の時間、およびタイムゾーンを示すように見えます。小数のタイムスタンプをサポートしないホストでは、小数の秒は省略されます。
--label=label
オプションでヘッダーのコンテンツを変更できます。See Alternate Namesを参照してください。次に、1つまたは複数の違いがあります。各ハンクは、ファイルが異なる1つの領域を示しています。統一形式のハンクは次のようになります。
@@ from-file-line-numbers to-file-line-numbers @@ line-from-one-file line-from-or-file ...ハンクに1行しかない場合は、開始行番号のみが表示されます。それ以外の場合、その行番号はのようになります。空のハンクは、ハンクに続く行から始まると見なされます。
start,count
ハンクとそのコンテキストに2つ以上の行が含まれている場合、その行番号はのようになります。それ以外の場合は、最終行番号のみが表示されます。空のハンクは、ハンクの前の行で終了すると見なされます。
start,count
両方のファイルに共通の行は、空白文字で始まります。2つのファイル間で実際に異なる行の左側の印刷列には、以下の標識文字の1つがあります。
- +
最初のファイルに行が追加されました。- -
最初のファイルからここで行が削除されました。
簡単な例の分析
形式は基本的にはdiff -u
統一された差分と同じです。
例えば:
diff -u <(seq -w 16) <(seq -w 16 | grep -Ev '^(02|03|14|15)$')
ここでは、2、3、14、15行目を削除しました。出力:
@@ -1,6 +1,4 @@
01
-02
-03
04
05
06
@@ -11,6 +9,4 @@
11
12
13
-14
-15
16
@@ -1,6 +1,4 @@
手段:
-1,6
これは、最初のファイルのこの部分が1行目から始まり、合計6行を示していることを意味します。したがって、1行目から6行目までを示しています。
1
2
3
4
5
6
-
通常はとして呼び出すため、「古い」を意味しdiff -u old new
ます。
+1,4
2番目のファイルのこの部分は1行目から始まり、合計4行を示します。したがって、1行目から4行目までを示しています。
+
「新しい」を意味します。
2行が削除されたため、6行ではなく4行しかありません!新しいハンクは次のとおりです。
01
04
05
06
@@ -11,6 +9,4 @@
2番目のハンクも同様です。
古いファイルには、古いファイルの11行目から始まる6行があります。
11
12
13
14
15
16
新しいファイルには、新しいファイルの9行目から始まる4行があります。
11
12
13
16
11
前のハンクで2行と2行をすでに削除しているため、lineは新しいファイルの9行目であることに注意してください。
ハンクヘッダー
あなたのgitのバージョンと設定に応じて、あなたはまた、次のコード行を取得することができます@@
例えば、ラインfunc1() {
で:
@@ -4,7 +4,6 @@ func1() {
これ-p
はplain のフラグで取得することもできdiff
ます。
例:古いファイル:
func1() {
1;
2;
3;
4;
5;
6;
7;
8;
9;
}
lineを削除する6
と、diffに次のように表示されます。
@@ -4,7 +4,6 @@ func1() {
3;
4;
5;
- 6;
7;
8;
9;
これは正しい行ではないことに注意してください。func1
行1
をスキップしました2
。
この素晴らしい機能は、多くの場合、各ハンクがどの関数またはクラスに属しているかを正確に伝えます。これは、diffを解釈するのに非常に役立ちます。
ヘッダーを選択するアルゴリズムがどのように機能するかについては、「git diffハンクヘッダーの抜粋はどこから来るのか」で説明されています。
@@ -1,6 +1,4 @@
「1行目から開始して、古い行数は6でしたが、新しい行数は4です」と読みました