Şu kaynaktan döndürülen bilgilerden veri topluyorum
git diff <commitId>..<commitId>
ve karşılaştım @@ -1 +1 @@
Bana ne söylediğini anlayamıyorum. Google'da biraz aradım ama işe yaramadı.
Şu kaynaktan döndürülen bilgilerden veri topluyorum
git diff <commitId>..<commitId>
ve karşılaştım @@ -1 +1 @@
Bana ne söylediğini anlayamıyorum. Google'da biraz aradım ama işe yaramadı.
Yanıtlar:
Bu birleşik bir diff hunk tanımlayıcısıdır. Bu edilir belgelenmiş GNU diffutils tarafından.
Birleşik çıktı biçimi, aşağıdaki gibi görünen iki satırlık bir başlık ile başlar:
--- dosyadan-dosyadan-değiştirme-zamanı +++ dosyadan-dosyaya-değişiklik-zamanıZaman damgası
2002-02-21 23:30:39.942229878 -0800
, tarihi, kesirli saniye ile saati ve saat dilimini belirtiyor gibi görünür . Kesirli zaman damgalarını desteklemeyen ana makinelerde kesirli saniyeler atlanır.Başlık içeriğini şu
--label=label
seçenekle değiştirebilirsiniz; bkz . Alternatif Adlar .Sonra bir veya daha fazla farklılıklar ortaya çıkıyor; her bir iri parça, dosyaların farklı olduğu bir alanı gösterir. Birleşik biçim gövdeleri şuna benzer:
@@ dosyadan-satır-numaralarından dosya-satır numaralarına @@ dosyadan-her iki dosyadan-her iki dosyadan satır ...Bir hunk yalnızca bir satır içeriyorsa, yalnızca başlangıç satırı numarası görünür. Aksi takdirde satır numaraları şöyle görünür . İri parçayı takip eden satırda boş bir iri parça başladığı kabul edilir.
start,count
Bir hunk ve bağlamı iki veya daha fazla satır içeriyorsa, satır numaraları şöyle görünür . Aksi takdirde yalnızca bitiş satır numarası görünür. Boş bir iri parça, iri parçadan önceki satırda bitiyor olarak kabul edilir.
start,count
Her iki dosyada ortak olan satırlar bir boşluk karakteriyle başlar. İki dosya arasında gerçekte farklı olan satırlar, sol yazdırma sütununda aşağıdaki gösterge karakterlerinden birine sahiptir:
- +
Buraya ilk dosyaya bir satır eklendi.- -
İlk dosyadan burada bir satır kaldırıldı.
Basit örnek analizi
Biçim temelde diff -u
birleşik fark ile aynıdır .
Örneğin:
diff -u <(seq -w 16) <(seq -w 16 | grep -Ev '^(02|03|14|15)$')
Burada 2, 3, 14 ve 15. satırları kaldırdık. Çıktı:
@@ -1,6 +1,4 @@
01
-02
-03
04
05
06
@@ -11,6 +9,4 @@
11
12
13
-14
-15
16
@@ -1,6 +1,4 @@
anlamına geliyor:
-1,6
ilk dosyanın bu parçasının 1. satırda başladığı ve toplam 6 satır gösterdiği anlamına gelir. Bu nedenle 1'den 6'ya kadar olan satırları gösterir.
1
2
3
4
5
6
-
genellikle çağırdığımız gibi "eski" anlamına gelir diff -u old new
.
+1,4
ikinci dosyanın bu parçasının 1. satırda başladığı ve toplam 4 satır gösterdiği anlamına gelir. Bu nedenle 1'den 4'e kadar olan satırları gösterir.
+
"yeni" anlamına gelir.
6 yerine sadece 4 hattımız var çünkü 2 satır kaldırıldı! Yeni iri parça sadece:
01
04
05
06
@@ -11,6 +9,4 @@
ikinci iri parça için benzer:
eski dosyada, eski dosyanın 11. satırından başlayan 6 satırımız var:
11
12
13
14
15
16
yeni dosyada, yeni dosyanın 9. satırından başlayan 4 satırımız var:
11
12
13
16
Bu satırın 11
yeni dosyanın 9. satırı olduğuna dikkat edin çünkü önceki hunk'ta 2 satırı zaten kaldırdık: 2 ve 3.
Hunk başlığı
Git sürümünüze ve yapılandırmanıza bağlı olarak, satırın yanında bir kod satırı da alabilirsiniz @@
, örneğin func1() {
:
@@ -4,7 +4,6 @@ func1() {
Bu aynı zamanda, elde edilebilir -p
, düz bayrağı diff
.
Örnek: eski dosya:
func1() {
1;
2;
3;
4;
5;
6;
7;
8;
9;
}
Satırı kaldırırsak 6
, fark şunu gösterir:
@@ -4,7 +4,6 @@ func1() {
3;
4;
5;
- 6;
7;
8;
9;
Bunun için doğru satır olmadığını unutmayın func1
: satırları atladı 1
ve 2
.
Bu harika özellik genellikle her bir parçanın hangi işleve veya sınıfa ait olduğunu söyler, bu da diff'i yorumlamak için çok kullanışlıdır.
Başlığı seçme algoritmasının tam olarak nasıl çalıştığı şu adreste tartışılmaktadır: git diff hunk başlığındaki alıntı nereden geliyor?
@@ -1,6 +1,4 @@
"1. satırdan başlıyor, eski satır sayısı 6 ama yeni satır sayısı 4"
Bu diff hunk'ın hangi satır numaralarında başladığını ve bittiğini belirten mevcut hunk aralığı bilgisidir.
Ayrıntılı bir açıklama için http://en.wikipedia.org/wiki/Diff#Unified_format sayfasını okuyun .