ฉันได้รวบรวมข้อมูลจากข้อมูลที่ส่งคืนมาจาก
git diff <commitId>..<commitId>
และฉันก็วิ่งเข้าไป @@ -1 +1 @@
ฉันคิดไม่ออกว่ามันบอกอะไรฉัน ฉันค้นหาใน Google นิดหน่อย แต่ก็ไม่มีประโยชน์
ฉันได้รวบรวมข้อมูลจากข้อมูลที่ส่งคืนมาจาก
git diff <commitId>..<commitId>
และฉันก็วิ่งเข้าไป @@ -1 +1 @@
ฉันคิดไม่ออกว่ามันบอกอะไรฉัน ฉันค้นหาใน Google นิดหน่อย แต่ก็ไม่มีประโยชน์
คำตอบ:
เป็นตัวระบุกลุ่มที่แตกต่างกัน เอกสารนี้จัดทำโดย GNU Diffutils
รูปแบบเอาต์พุตแบบรวมเริ่มต้นด้วยส่วนหัวสองบรรทัดซึ่งมีลักษณะดังนี้:
--- from-file from-file-modified-time +++ to-file to-file-modified-timeการประทับเวลาดูเหมือน
2002-02-21 23:30:39.942229878 -0800จะระบุวันที่เวลาพร้อมเศษเสี้ยววินาทีและเขตเวลา วินาทีเศษส่วนจะถูกละไว้ในโฮสต์ที่ไม่รองรับการประทับเวลาแบบเศษส่วนคุณสามารถเปลี่ยนเนื้อหาส่วนหัวด้วย
--label=labelตัวเลือก ดูดูรายชื่อสำรองถัดไปเป็นความแตกต่างอย่างน้อยหนึ่งอย่าง; แต่ละกลุ่มจะแสดงพื้นที่หนึ่งที่ไฟล์แตกต่างกัน hunks รูปแบบรวมมีลักษณะดังนี้:
@@ from-file-line-numbers to-file-line-numbers @@ line-from-any-file line-from-any-file ...หากกลุ่มมีเพียงหนึ่งบรรทัดหมายเลขบรรทัดเริ่มต้นจะปรากฏขึ้นเท่านั้น มิฉะนั้นหมายเลขบรรทัดของมันมีลักษณะเหมือน ก้อนที่ว่างเปล่าจะถือว่าเริ่มต้นที่เส้นที่ตามหลังก้อนใหญ่
start,countหาก hunk และบริบทมีสองบรรทัดขึ้นไปหมายเลขบรรทัดจะมีลักษณะดังนี้ มิฉะนั้นจะมีเพียงหมายเลขท้ายบรรทัดเท่านั้นที่ปรากฏขึ้น ก้อนที่ว่างเปล่าจะถือว่าสิ้นสุดที่เส้นที่นำหน้าก้อนใหญ่
start,countบรรทัดทั่วไปของไฟล์ทั้งสองเริ่มต้นด้วยอักขระช่องว่าง บรรทัดที่แตกต่างกันระหว่างสองไฟล์มีอักขระตัวบ่งชี้ต่อไปนี้ในคอลัมน์พิมพ์ด้านซ้าย:
- +
มีการเพิ่มบรรทัดที่นี่ในไฟล์แรก- -
บรรทัดนี้ถูกลบออกจากไฟล์แรก
การวิเคราะห์ตัวอย่างง่ายๆ
โดยพื้นฐานแล้วรูปแบบจะเหมือนกันกับความ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หมายความว่าส่วนนี้ของไฟล์ที่สองเริ่มต้นที่บรรทัดที่ 1 และแสดงทั้งหมด 4 บรรทัด ดังนั้นจึงแสดงบรรทัดที่ 1 ถึง 4
+ หมายถึง "ใหม่"
เรามีเพียง 4 บรรทัดแทนที่จะเป็น 6 เพราะ 2 บรรทัดถูกลบออก! ก้อนใหม่เป็นเพียง:
01
04
05
06
@@ -11,6 +9,4 @@ สำหรับก้อนที่สองนั้นคล้ายคลึงกัน:
ในไฟล์เก่าเรามี 6 บรรทัดโดยเริ่มจากบรรทัดที่ 11 ของไฟล์เก่า:
11
12
13
14
15
16
ในไฟล์ใหม่เรามี 4 บรรทัดเริ่มต้นที่บรรทัดที่ 9 ของไฟล์ใหม่:
11
12
13
16
โปรดทราบว่าบรรทัด11เป็นบรรทัดที่ 9 ของไฟล์ใหม่เนื่องจากเราได้ลบ 2 บรรทัดในกลุ่มก่อนหน้านี้: 2 และ 3
ส่วนหัวของ Hunk
ขึ้นอยู่กับเวอร์ชันคอมไพล์และคอนฟิกูเรชันของคุณคุณยังสามารถรับโค้ดที่อยู่ถัดจาก@@บรรทัดเช่นfunc1() {ใน:
@@ -4,7 +4,6 @@ func1() {
นอกจากนี้ยังสามารถรับได้กับธงของธรรมดา-pdiff
ตัวอย่าง: ไฟล์เก่า:
func1() {
1;
2;
3;
4;
5;
6;
7;
8;
9;
}
หากเราลบเส้น6ค่าต่างจะแสดง:
@@ -4,7 +4,6 @@ func1() {
3;
4;
5;
- 6;
7;
8;
9;
โปรดทราบว่านี่ไม่ใช่บรรทัดที่ถูกต้องสำหรับfunc1: มันข้ามบรรทัด1และ2.
คุณลักษณะที่ยอดเยี่ยมนี้มักจะบอกอย่างชัดเจนว่าฟังก์ชันหรือคลาสใดที่แต่ละกลุ่มเป็นของซึ่งมีประโยชน์มากในการตีความความแตกต่าง
อัลกอริทึมในการเลือกส่วนหัวทำงานอย่างไรมีการพูดคุยกันที่: ข้อความที่ตัดตอนมาในส่วนหัว git diff hunk มาจากไหน?
@@ -1,6 +1,4 @@ว่า "เริ่มต้นที่บรรทัดที่ 1 จำนวนบรรทัดเก่าคือ 6 แต่จำนวนบรรทัดใหม่คือ 4"
เป็นข้อมูลช่วง hunk ปัจจุบันที่ระบุว่าหมายเลขบรรทัดใดที่กลุ่มที่แตกต่างนี้เริ่มต้นและสิ้นสุด
อ่านhttp://en.wikipedia.org/wiki/Diff#Unified_formatสำหรับคำอธิบายเชิงลึก