เปรียบเทียบข้อความ (Text Diff Checker)
เปรียบเทียบข้อความหรือโค้ดสองชุดทีละบรรทัด บรรทัดที่เพิ่ม ลบ และเปลี่ยนจะถูกไฮไลต์ ละเอียดถึงคำที่ต่างกัน
ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด
วิธีใช้ เปรียบเทียบข้อความ (Diff Checker)
- วางข้อความต้นฉบับทางซ้ายและข้อความที่เปลี่ยนทางขวา หรือเปิดไฟล์สองไฟล์
- การเปรียบเทียบอัปเดตทันทีที่คุณพิมพ์ เลือกมุมมอง เคียงข้างกัน หรือ Unified
- ติ๊ก ไม่สนใจช่องว่าง, ไม่สนใจตัวพิมพ์เล็กใหญ่ หรือ ไม่สนใจบรรทัดว่าง เพื่อซ่อนสิ่งรบกวน เช่น การเยื้องใหม่
- ใช้ ซ่อนส่วนที่ไม่เปลี่ยน เพื่อโฟกัสที่การเปลี่ยนแปลง โดยแสดงบริบทรอบ ๆ สามบรรทัด
- คลิก คัดลอกเป็น patch หรือ ดาวน์โหลด .diff เพื่อรับ unified diff มาตรฐานที่ใช้กับ
git applyหรือpatchได้
Diff checker นี้ทำงานอย่างไร
เครื่องมือแยกข้อมูลทั้งสองเป็นบรรทัดและรัน อัลกอริทึม Myers difference ซึ่งเป็นอัลกอริทึม O(ND) เดียวกับที่ใช้ใน git diff และ GNU diff โดยหาลำดับการแทรกและการลบที่สั้นที่สุดที่เปลี่ยนต้นฉบับให้เป็นข้อความที่เปลี่ยนแล้ว ผลลัพธ์จึงแสดงบรรทัดที่เปลี่ยนน้อยที่สุดเท่าที่เป็นไปได้ บรรทัดต้นและท้ายที่เหมือนกันจะถูกข้ามก่อน ทำให้การเปรียบเทียบไฟล์หลายพันบรรทัดเกือบจะทันที
เมื่อบรรทัดที่ถูกลบและบรรทัดที่ถูกเพิ่มอยู่ติดกัน จะถูกจับคู่เป็นบรรทัดที่ แก้ไข และ diff อีกครั้งทีละคำ คำที่เปลี่ยนจริงจะได้รับไฮไลต์ที่เข้มกว่า ตัวแปรที่เปลี่ยนชื่อหรือตัวเลขที่ถูกแก้จึงโดดเด่นแม้อยู่ในบรรทัดยาว
มุมมองเคียงข้างกัน vs. unified
เคียงข้างกัน วางต้นฉบับไว้ทางซ้ายและเวอร์ชันใหม่ไว้ทางขวา พร้อมเลขบรรทัดของทั้งสองฝั่ง เป็นมุมมองที่ง่ายที่สุดสำหรับรีวิวข้อความ ไฟล์ config และการเปลี่ยนโค้ดเล็กน้อย มุมมอง Unified แสดงบรรทัดที่ลบ (-) และเพิ่ม (+) สลับกันในคอลัมน์เดียว ซึ่งเป็นรูปแบบที่ใช้ในเครื่องมือรีวิวโค้ดและไฟล์ patch
รูปแบบ unified diff (patch)
patch ที่ส่งออกเป็นไปตามรูปแบบ diff -u: เฮดเดอร์ ---/+++ ตามด้วย hunk ที่ขึ้นต้นด้วย @@ -l,s +l,s @@ โดย l คือเลขบรรทัดแรก และ s คือจำนวนบรรทัดของ hunk ในแต่ละไฟล์ แต่ละ hunk มีบริบทที่ไม่เปลี่ยนสามบรรทัด จึงใช้กับ patch -p0 หรือ git apply ได้แม้บรรทัดใกล้เคียงจะย้ายที่
เมื่อใดควรใช้ตัวเลือกการละเว้น
- ไม่สนใจช่องว่าง ถือว่าบรรทัดเท่ากันหากต่างกันเพียงช่องว่างหรือแท็บ ใช้หลังจากเยื้องโค้ดใหม่หรือเปลี่ยนแท็บเป็นช่องว่าง
- ไม่สนใจตัวพิมพ์เล็กใหญ่ สะดวกสำหรับ SQL, HTML และไฟล์ log ที่ตัวพิมพ์ไม่สำคัญ
- ไม่สนใจบรรทัดว่าง ซ่อนบรรทัดที่ถูกเพิ่มหรือลบเพื่อเว้นระยะเท่านั้น