Saya telah mengumpulkan data dari informasi yang dikembalikan dari
git diff <commitId>..<commitId>
dan saya bertemu @@ -1 +1 @@
Saya tidak tahu apa yang dikatakan itu kepada saya. Saya sudah mencari sedikit di Google tetapi tidak berhasil.
Saya telah mengumpulkan data dari informasi yang dikembalikan dari
git diff <commitId>..<commitId>
dan saya bertemu @@ -1 +1 @@
Saya tidak tahu apa yang dikatakan itu kepada saya. Saya sudah mencari sedikit di Google tetapi tidak berhasil.
Jawaban:
Ini adalah pengenal diff hunk terpadu. Ini didokumentasikan oleh GNU Diffutils.
Format keluaran terpadu dimulai dengan tajuk dua baris, yang terlihat seperti ini:
--- dari-file dari-file-modifikasi-waktu +++ ke-file ke-file-modifikasi-waktuCap waktu terlihat seperti itu
2002-02-21 23:30:39.942229878 -0800
menunjukkan tanggal, waktu dengan pecahan detik, dan zona waktu. Detik pecahan dihilangkan pada host yang tidak mendukung stempel waktu pecahan.Anda dapat mengubah konten header dengan
--label=label
opsi; lihat Lihat Nama Alternatif .Berikutnya datang satu atau lebih bongkahan perbedaan; setiap bongkah menunjukkan satu area di mana file berbeda. Hunk format terpadu terlihat seperti ini:
@@ from-file-line-numbers to-file-line-numbers @@ baris-dari-salah-file baris-dari-salah-file ...Jika bingkah hanya berisi satu baris, hanya nomor baris awalnya yang muncul. Jika tidak, nomor barisnya akan terlihat seperti
start,count
. Bongkahan kosong dianggap mulai dari garis yang mengikuti bongkahan tersebut.Jika sebongkah dan konteksnya berisi dua atau lebih baris, nomor barisnya akan terlihat seperti . Jika tidak, hanya nomor baris akhirnya yang muncul. Bongkahan kosong dianggap berakhir di garis yang mendahului bongkah tersebut.
start,count
Baris yang umum untuk kedua file dimulai dengan karakter spasi. Garis-garis yang sebenarnya berbeda antara kedua file tersebut memiliki salah satu karakter indikator berikut di kolom kiri cetak:
- +
Garis telah ditambahkan di sini ke file pertama.- -
Garis telah dihapus di sini dari file pertama.
Analisis contoh sederhana
Formatnya pada dasarnya sama dengan diff -u
unified diff.
Misalnya:
diff -u <(seq -w 16) <(seq -w 16 | grep -Ev '^(02|03|14|15)$')
Di sini kami menghapus baris 2, 3, 14 dan 15. Output:
@@ -1,6 +1,4 @@
01
-02
-03
04
05
06
@@ -11,6 +9,4 @@
11
12
13
-14
-15
16
@@ -1,6 +1,4 @@
cara:
-1,6
berarti bagian dari file pertama ini dimulai pada baris 1 dan menunjukkan total 6 baris. Oleh karena itu, ini menunjukkan baris 1 hingga 6.
1
2
3
4
5
6
-
berarti "tua", seperti yang biasa kita sebut sebagai diff -u old new
.
+1,4
berarti bahwa bagian dari file kedua ini dimulai pada baris 1 dan menampilkan total 4 baris. Oleh karena itu, ini menunjukkan baris 1 hingga 4.
+
berarti "baru".
Kami hanya memiliki 4 baris, bukan 6 karena 2 baris telah dihapus! Yang baru hanya:
01
04
05
06
@@ -11,6 +9,4 @@
untuk bongkahan kedua adalah analog:
pada file lama, kami memiliki 6 baris, dimulai dari baris 11 dari file lama:
11
12
13
14
15
16
pada file baru, kami memiliki 4 baris, dimulai dari baris 9 file baru:
11
12
13
16
Perhatikan bahwa baris tersebut 11
adalah baris ke-9 dari file baru karena kami telah menghapus 2 baris pada bagian sebelumnya: 2 dan 3.
Hunk header
Bergantung pada versi dan konfigurasi git Anda, Anda juga bisa mendapatkan baris kode di sebelah @@
baris tersebut, misalnya di func1() {
dalam:
@@ -4,7 +4,6 @@ func1() {
Ini juga bisa diperoleh dengan -p
bendera polos diff
.
Contoh: file lama:
func1() {
1;
2;
3;
4;
5;
6;
7;
8;
9;
}
Jika kita menghapus garis 6
, perbedaannya menunjukkan:
@@ -4,7 +4,6 @@ func1() {
3;
4;
5;
- 6;
7;
8;
9;
Perhatikan bahwa ini bukan baris yang benar untuk func1
: baris yang dilewati 1
dan 2
.
Fitur luar biasa ini sering kali memberi tahu dengan tepat fungsi atau kelas mana yang dimiliki setiap hunk, yang sangat berguna untuk menafsirkan perbedaannya.
Bagaimana algoritma untuk memilih tajuk bekerja persis dibahas di: Dari mana kutipan di tajuk git diff hunk berasal?
@@ -1,6 +1,4 @@
sebagai "Mulai dari baris 1, jumlah baris yang lama adalah 6 tetapi jumlah baris baru adalah 4"
Ini adalah informasi kisaran cowok saat ini yang menyatakan di nomor baris mana tempat ini dimulai dan diakhiri.
Baca http://en.wikipedia.org/wiki/Diff#Unified_format untuk penjelasan mendalam.