diff · + added · − removed
เปรียบเทียบข้อความ
การเปรียบเทียบ “red, green, blue” กับ “red, yellow, blue” ทีละบรรทัดได้ 1 บรรทัดที่เพิ่ม 1 บรรทัดที่ลบ และ 2 บรรทัดที่ไม่เปลี่ยน วางสองข้อความเพื่อดูทุกความแตกต่าง
- +1 −1 =2
- @@ -1,3 +1,3 @@
แต่ละบรรทัดที่เพิ่มมีเครื่องหมาย + และแต่ละบรรทัดที่ลบมีเครื่องหมาย − นอกเหนือจากสี และอักขระที่เปลี่ยนภายในบรรทัดที่ถูกแทนที่จะถูกไฮไลต์ ข้อความขนาดเล็กเปรียบเทียบขณะคุณพิมพ์ ข้อความไม่ออกจากแท็บนี้
Scanned by NortonTM Safe Web
ภาพรวมโดยสรุป
- ราคา
- ไม่มีค่าใช้จ่าย
- บัญชี
- ไม่ต้องมี
- การอัปโหลด
- ไม่เกี่ยวข้อง — ทั้งสองข้อความอยู่ในแท็บของคุณ
- วิธีการ
- ลำดับย่อยร่วมที่ยาวที่สุดของบรรทัด พร้อมไฮไลต์อักขระที่เปลี่ยน
- ผลลัพธ์
- บรรทัดที่มีสีและเครื่องหมาย หรือ unified diff ที่มีบริบท 3 บรรทัด
- ขีดจำกัดขนาด
- 5,000 บรรทัดและ 5,000,000 อักขระต่อข้อความ
ตัวอย่างการเปรียบเทียบและผลของตัวเลือก
ตารางมาจากโค้ดเดียวกับเครื่องมือ ตารางแรกเปรียบเทียบสองข้อความสามบรรทัด ตารางที่สองแสดงว่าตัวเลือกเปลี่ยนผลลัพธ์อย่างไรสำหรับบรรทัดคู่หนึ่ง
| เครื่องหมาย | บรรทัด |
|---|---|
| = | red |
| − | green |
| + | yellow |
| = | blue |
| การตั้งค่า | บรรทัดที่เพิ่ม | บรรทัดที่ลบ |
|---|---|---|
| ตรงทุกตัว | 1 | 1 |
| ไม่สนใจตัวพิมพ์ | 1 | 1 |
| ไม่สนใจช่องว่าง | 1 | 1 |
| ไม่สนใจตัวพิมพ์และช่องว่าง | 0 | 0 |
วิธีเปรียบเทียบสองข้อความ
วางสองข้อความ
ใส่ข้อความเก่าในกล่องต้นฉบับ และข้อความใหม่ในกล่องที่เปลี่ยนแล้ว มีตัวอย่างสั้น ๆ สองชุดอยู่แล้ว สลับเพื่อแลกสองกล่อง และล้างเพื่อทำให้ทั้งสองกล่องว่าง
เลือกสิ่งที่นับเป็นความแตกต่าง
ติ๊กไม่สนใจตัวพิมพ์เพื่อถือว่า “Hello” และ “hello” เป็นบรรทัดเดียวกัน และไม่สนใจช่องว่างเพื่อข้ามช่องว่างที่ปลายบรรทัดและช่องว่างซ้ำภายในบรรทัด แสดงเฉพาะที่เปลี่ยนจะซ่อนบรรทัดที่ไม่เปลี่ยน โดยคงไว้ 3 บรรทัดรอบแต่ละการเปลี่ยนแปลง
อ่านหรือคัดลอกความแตกต่าง
บรรทัดที่มี − มีเฉพาะในต้นฉบับ บรรทัดที่มี + มีเฉพาะในข้อความที่เปลี่ยนแล้ว คัดลอก unified diff เพื่อวางในข้อความหรือแพตช์ หรือดาวน์โหลดเป็นไฟล์ .diff
วิธีการเปรียบเทียบทำงาน
สองข้อความถูกแบ่งเป็นบรรทัด และเครื่องมือหาลำดับย่อยร่วมที่ยาวที่สุดของบรรทัด ซึ่งคือชุดบรรทัดที่ใหญ่ที่สุดที่ปรากฏในทั้งสองข้อความตามลำดับเดียวกัน ทุกบรรทัดนอกชุดนั้นถูกรายงานว่าลบ (มีเฉพาะในต้นฉบับ) หรือเพิ่ม (มีเฉพาะในข้อความที่เปลี่ยนแล้ว) ดังนั้น diff จึงมีบรรทัดที่เปลี่ยนน้อยที่สุดเท่าที่เป็นไปได้ เมื่อบรรทัดที่ลบตามด้วยบรรทัดที่เพิ่มโดยตรง อักขระที่ต่างกันระหว่างสองบรรทัดจะถูกไฮไลต์
diff ทำงานกับบรรทัดเพราะบรรทัดคือหน่วยที่โค้ด ไฟล์ตั้งค่า และรายการเปลี่ยนแปลง และการเปรียบเทียบแบบบรรทัดยังเร็วสำหรับหลายพันบรรทัด บรรทัดที่ย้ายตำแหน่งจะแสดงหนึ่งครั้งเป็นลบและอีกครั้งเป็นเพิ่ม คำที่เปลี่ยนจะแสดงเป็นบรรทัดที่ถูกแทนที่ พร้อมอักขระที่ไฮไลต์ ตัวขึ้นบรรทัดใหม่ถูกทำให้เป็นมาตรฐาน ไฟล์ที่บันทึกด้วยการขึ้นบรรทัดใหม่แบบ Windows จึงตรงกับไฟล์เดียวกันที่บันทึกแบบ Unix แต่ละข้อความมีได้สูงสุด 5,000 บรรทัดและ 5,000,000 อักขระ ผลลัพธ์ unified diff ใช้รูปแบบทั่วไป: ส่วนหัว --- และ +++ แล้วตามด้วยส่วน @@ ที่มีบริบท 3 บรรทัด
คำถามเกี่ยวกับการเปรียบเทียบข้อความ
text diff ตัดสินอย่างไรว่าอะไรเปลี่ยน
หาลำดับย่อยร่วมที่ยาวที่สุดของบรรทัด หมายถึงบรรทัดมากที่สุดที่สองข้อความมีร่วมกันตามลำดับเดียวกัน บรรทัดนอกชุดนั้นมีเครื่องหมาย − หากมีเฉพาะในต้นฉบับ และ + หากมีเฉพาะในข้อความที่เปลี่ยนแล้ว “red, green, blue” เทียบกับ “red, yellow, blue” คง red และ blue ลบ green และเพิ่ม yellow
ทำไมการเปรียบเทียบทำงานกับบรรทัดไม่ใช่คำ
บรรทัดคือวิธีที่โค้ด บันทึก รายการ และไฟล์ตั้งค่าถูกจัดระเบียบ และผลลัพธ์แบบบรรทัดสั้นพอที่จะอ่านได้ สำหรับบรรทัดที่ถูกแทนที่ อักขระที่ต่างกันจะถูกไฮไลต์ภายในบรรทัด จึงเห็นการเปลี่ยนคำเดียวในประโยคยาวได้ง่าย
สีและเครื่องหมาย + และ − หมายความว่าอะไร
บรรทัดสีเขียวที่มี + ถูกเพิ่มในข้อความที่เปลี่ยนแล้ว บรรทัดสีแดงที่มี − ถูกลบออกจากต้นฉบับ บรรทัดที่ไม่มีเครื่องหมายเหมือนกันในทั้งสอง เครื่องหมายถูกพิมพ์ควบคู่กับสี ผลลัพธ์จึงอ่านได้โดยไม่ต้องแยกสีแดงจากสีเขียว
จะไม่สนใจความต่างของตัวพิมพ์หรือช่องว่างได้อย่างไร
ติ๊กไม่สนใจตัวพิมพ์เพื่อเปรียบเทียบบรรทัดโดยไม่คำนึงถึงตัวพิมพ์ใหญ่ และไม่สนใจช่องว่างเพื่อข้ามช่องว่างที่ต้นและท้ายบรรทัด และถือช่องว่างต่อเนื่องภายในบรรทัดเป็นช่องว่างเดียว เมื่อติ๊กทั้งสอง “Hello World” และ “hello world” เป็นบรรทัดเดียวกัน
สองข้อความมีขนาดใหญ่ได้เท่าไร
แต่ละข้อความมีได้สูงสุด 5,000 บรรทัดและ 5,000,000 อักขระ ข้อความ 5,000 บรรทัดเทียบกับสำเนาที่เรียงใหม่ของตัวเองประมวลผลได้ในเวลาน้อยกว่าหนึ่งวินาทีบนคอมพิวเตอร์ปัจจุบัน เมื่อรวมเกิน 100,000 อักขระ การเปรียบเทียบจะเริ่มเมื่อคุณกดเปรียบเทียบแทนที่จะเริ่มขณะพิมพ์
unified diff คืออะไร
เป็นรูปแบบข้อความที่ diff และ Git ใช้ เริ่มด้วยบรรทัด --- และ +++ ที่ระบุชื่อสองข้อความ แล้วตามด้วยหนึ่งบล็อกต่อกลุ่มการเปลี่ยนแปลง บล็อกเริ่มด้วยส่วนหัวอย่าง @@ -1,3 +1,3 @@ หมายถึง 3 บรรทัดจากบรรทัดที่ 1 ของต้นฉบับ และ 3 บรรทัดจากบรรทัดที่ 1 ของข้อความที่เปลี่ยนแล้ว และทุกบรรทัดขึ้นต้นด้วยช่องว่าง + หรือ −