เครื่องมือเปรียบเทียบข้อความ (ระดับบรรทั
วางเวอร์ชันเดิมและแก้ไขเพื่อดู diff ระดับบรรทัดเคียงข้างกัน มีประโยชน์สำหรับเอกสาร config การตรวจสอบโค้ด และการแก้ไขร้อยแก้ว
วิธีการทำงาน
Diff คำนวณอย่างไร
เราใช้อัลกอริทึม Longest Common Subsequence (LCS) เพื่อค้นหาบรรทัดที่ใช้ร่วมกันระหว่างสองเวอร์ชัน บรรทัดที่ปรากฏในทั้งสองคือ 'ไม่เปลี่ยนแปลง' บรรทัดเฉพาะในต้นฉบับคือ 'ลบ' บรรทัดเฉพาะในเวอร์ชันแก้ไขคือ 'เพิ่ม' ผลลัพธ์คือการเปรียบเทียบที่แสดงความคิดเห็นอย่างชัดเจนพร้อมรักษาหมายเลขบรรทัดทั้งสองด้าน
LCS เป็นแนวทางมาตรฐานที่ git และเครื่องมือ diff ส่วนใหญ่ใช้ มันเลือกลำดับที่ตรงกันที่ยาวที่สุดที่เป็นไปได้ ซึ่งโดยปกติตรงกับที่มนุษย์จะเรียกว่า 'ย่อหน้าเดียวกัน' สำหรับอินพุตที่ใหญ่มาก (10,000+ บรรทัด) เวลาทำงานเติบโตแบบกำลังสอง หากคุณต้องเปรียบเทียบ log ขนาดใหญ่ ใช้เครื่องมือ diff แบบ streaming แทน
สิ่งนี้ดีสำหรับอะไร
การแก้ไขเอกสาร: ดูสิ่งที่เปลี่ยนแปลงระหว่างฉบับร่าง มีประโยชน์สำหรับสัญญาทางกฎหมาย ข้อกำหนดในการให้บริการ และข้อความใดๆ ที่ 'อะไรเปลี่ยน?' สำคัญ
ไฟล์การกำหนดค่า: เปรียบเทียบไฟล์ .env หรือ YAML สองไฟล์เพื่อหาความผิดพลาดของการกำหนดค่า หรือสองเวอร์ชันของ deploy script
การแก้ไขร้อยแก้ว: นักเขียนสามารถดูการแก้ไขของบรรณาธิการในบริบท โดยเฉพาะเมื่อมีเพียงไม่กี่บรรทัดที่เปลี่ยนแปลง
การตรวจสอบโค้ด (การใช้งานเบา): สำหรับ snippet เล็กๆ สำหรับการตรวจสอบโค้ดจริง ใช้เครื่องมือที่เข้าใจไวยากรณ์ — git diff พร้อมแฟล็กความหมายหรือเครื่องมือตรวจสอบเฉพาะจะให้ผลลัพธ์ที่ดีกว่า
ข้อจำกัด
เรา diff ที่ความละเอียดบรรทัด ถ้าคุณเปลี่ยน 'cat' เป็น 'cats' ในบรรทัด บรรทัดทั้งหมดแสดงเป็นลบและเพิ่ม เราไม่เน้น 's' ที่แทรก diff ระดับคำและอักขระมีประโยชน์สำหรับสิ่งนั้น แต่อ่านยากกว่าในบรรทัดยาว
ช่องว่างต่อท้ายสำคัญ — 'foo' และ 'foo ' (ช่องว่างต่อท้าย) นับเป็นบรรทัดต่างกัน ถ้าคุณต้องการเปรียบเทียบที่ไม่ไวต่อช่องว่าง normalize ข้อความก่อนวาง
ลำดับสำคัญ ย่อหน้าสองย่อหน้าในตำแหน่งต่างกันนับว่าทั้งลบและเพิ่ม diff ไม่พยายามตรวจหาบล็อก 'ที่ย้าย'
คำถามที่พบบ่อย
›รองรับ diff ระดับคำหรือไม่?
ยังไม่ — เฉพาะระดับบรรทัด เราอาจเพิ่มความละเอียดอักขระหรือคำในภายหลังสำหรับการเปรียบเทียบสั้นๆ
›ข้อความของฉันใหญ่ได้แค่ไหน?
ในทางปฏิบัติสูงสุดไม่กี่พันบรรทัดต่อด้าน ความซับซ้อนกำลังสองหมายความว่าอินพุตขนาดใหญ่มากอาจทำให้แท็บเบราว์เซอร์ค้างชั่วครู่
›ข้อมูลออกจากเบราว์เซอร์หรือไม่?
ไม่ การ diff ทำงานในเครื่องทั้งหมด
›ช่องว่างต่อท้ายสำคัญหรือไม่?
ใช่ บรรทัดสองบรรทัดที่ต่างกันเฉพาะช่องว่างต่อท้ายถูกนับว่าต่างกัน Normalize ช่องว่างก่อนวางถ้าคุณต้องการการจับคู่ที่ไม่ไวต่อช่องว่าง
›บันทึก diff ได้ไหม?
ไม่ใช่ไฟล์ที่บันทึก คัดลอก-วางข้อความที่แสดงหรือถ่ายภาพหน้าจอในขณะนี้
›เป็นอัลกอริทึมเดียวกับ git diff หรือไม่?
ใช่ในเชิงแนวคิด — เราใช้ LCS ซึ่งเป็นหนึ่งในตัวเลือกของ git Git ค่าเริ่มต้นเป็นอัลกอริทึมที่คล้ายกันแต่ซับซ้อนกว่า (Myers diff พร้อม Patience เป็น opt-in) เอาต์พุตสำหรับอินพุตสั้นๆ เหมือนกันเป็นหลัก
›ทำไมบรรทัดทั้งหมดถูกทำเครื่องหมายเมื่อเปลี่ยนเพียงคำเดียว?
เพราะเราทำงานที่ความละเอียดบรรทัด diff ระดับอักขระจะเน้นคำที่เปลี่ยนแปลง แต่อ่านยากกว่าในบรรทัดยาว
›เปรียบเทียบมากกว่าสองเวอร์ชันได้ไหม?
ไม่ใช่ในเครื่องมือนี้ สำหรับการผสาน multi-way ใช้เครื่องมือ diff 3-way เฉพาะ
เครื่องมือที่เกี่ยวข้อง
อัปเดตล่าสุด: