วิธีหาว่าข้อความสองฉบับต่างกันตรงไหน
หากต้องการหาสิ่งที่เปลี่ยนไประหว่างสองฉบับ ให้วางทั้งสองฉบับลงในเครื่องมือเปรียบเทียบข้อความ เครื่องมือจะจัดข้อความให้บรรทัดตรงกัน แสดงรายการบรรทัดที่ต่างกัน และทำเครื่องหมายคำที่เปลี่ยนภายในแต่ละคู่บรรทัด วิธีนี้เหมาะทั้งกับโค้ดและงานเขียนทั่วไป คำเดียวที่ถูกแก้ในย่อหน้ายาวจะเด่นขึ้นมา ส่วนที่เหลือของย่อหน้าไม่ถูกแตะต้อง
เทียบข้อความข้อความไหนเปลี่ยนไปจากเดิมบ้าง?ใช้ฟรีdiff ทำงานอย่างไร
diff จะหาลำดับร่วมที่ยาวที่สุด (LCS) ซึ่งคือชุดรายการที่ปรากฏในทั้งสองฉบับตามลำดับเดียวกันและยาวที่สุด รายการเหล่านี้ไม่จำเป็นต้องอยู่ติดกัน ทุกอย่างในชุดร่วมนี้คือส่วนที่ไม่เปลี่ยน ส่วนที่เหลือเป็นได้ทั้งการเพิ่ม ซึ่งปรากฏเฉพาะในฉบับใหม่ หรือการลบ ซึ่งปรากฏเฉพาะในฉบับเก่า
ตัวอย่างเล็ก ๆ คือ ฉบับเก่าเป็น "A B C D" และฉบับใหม่เป็น "A C X D" ลำดับร่วมที่ยาวที่สุดคือ "A C D" ดังนั้น B เป็นการลบ และ X เป็นการเพิ่ม เครื่องมือเปรียบเทียบข้อความทำแบบเดียวกันกับเอกสารยาว ๆ จึงแสดงรายการการเปลี่ยนแปลงที่แม่นยำได้ แทนที่จะวางข้อความสองกล่องเรียงกันให้เปรียบเทียบเอง
บรรทัดและคำ
- บรรทัด เหมาะกับโค้ด ไฟล์การตั้งค่า รายการ และทุกอย่างที่มีหนึ่งรายการต่อหนึ่งบรรทัด บรรทัดที่เปลี่ยนจะแสดงเป็นการลบตามด้วยการเพิ่ม
- คำ เหมาะกับเรียงความ สัญญา และงานเขียนทั่วไป ภายในคู่บรรทัดที่เปลี่ยน เครื่องมือจะทำเครื่องหมายเฉพาะคำที่เปลี่ยน ดังนั้นประโยคที่แก้เพียงคำเดียวจะไม่ดูเหมือนถูกเขียนใหม่ทั้งประโยค
ตัวอย่างที่ทำให้เห็นภาพ: คำเดียวที่สำคัญ
พิจารณาข้อความสองฉบับของข้อกำหนดข้อหนึ่ง:
- เดิม: "The supplier shall deliver the goods within 14 days of the order."
- ใหม่: "The supplier may deliver the goods within 30 days of the order."
ในเครื่องมือเปรียบเทียบข้อความ ประโยคนี้จะปรากฏเป็นหนึ่งบรรทัดที่ถูกลบและหนึ่งบรรทัดที่ถูกเพิ่ม คำที่ทำเครื่องหมายแสดงการเปลี่ยนแปลงสองจุดชัดเจน คือ "shall" เปลี่ยนเป็น "may" และ "14" เปลี่ยนเป็น "30" ส่วนที่เหลือของประโยคเหมือนเดิม การเปลี่ยนแรกทำให้ความหมายต่างไป เพราะภาระผูกพันกลายเป็นทางเลือก จึงควรอ่านคำที่ทำเครื่องหมายอย่างละเอียด
ไม่สนใจช่องว่างและตัวพิมพ์ใหญ่-เล็ก
ความต่างของช่องว่างและตัวพิมพ์มักบดบังการเปลี่ยนแปลงจริง เครื่องมือจึงมีช่องติ๊กสำหรับสองอย่างนี้:
- ติ๊ก ไม่สนใจช่องว่าง เมื่อมีเพียงการเว้นวรรคที่เปลี่ยน เช่น ช่องว่างท้ายบรรทัดที่โปรแกรมแก้ไขเพิ่มเข้ามา
- ติ๊ก ไม่สนใจตัวพิมพ์ใหญ่-เล็ก เมื่อรายการถูกพิมพ์โดยหลายคน อย่าเลือกตัวเลือกนี้ในจุดที่สำคัญ เช่น คีย์ในไฟล์การตั้งค่า หรือชื่อไฟล์บน Linux
- ติ๊ก แสดงเฉพาะบรรทัดที่เปลี่ยน เพื่อซ่อนข้อความที่ไม่เปลี่ยนในการเปรียบเทียบที่ยาว
ยกตัวอย่างเช่น "Total: 100" และ "total: 100" มีเนื้อหาเหมือนกันเมื่อไม่สนใจตัวพิมพ์ใหญ่-เล็ก แต่ในไฟล์ที่คีย์แยกตัวพิมพ์ ทั้งสองคือการตั้งค่าที่ต่างกัน จึงไม่ควรเลือกไม่สนใจตัวพิมพ์ในกรณีนั้น
วิธีทำกับ fixmint
- วางฉบับเก่าลงในช่อง ต้นฉบับ และวางฉบับใหม่ลงในช่อง ฉบับที่แก้แล้ว
- ติ๊ก ไม่สนใจช่องว่าง หรือ ไม่สนใจตัวพิมพ์ใหญ่-เล็ก เฉพาะเมื่อความต่างเหล่านั้นไม่สำคัญต่อการตรวจของคุณ
- อ่านบรรทัดที่เปลี่ยนก่อน แล้วจึงอ่านคำที่ทำเครื่องหมายภายในบรรทัดเหล่านั้น
- ติ๊ก แสดงเฉพาะบรรทัดที่เปลี่ยน เพื่อซ่อนข้อความที่ไม่เปลี่ยนในการเปรียบเทียบที่ยาว
- คลิก คัดลอกผลต่าง เพื่อเก็บผลลัพธ์
กรณีพิเศษ
- ย่อหน้าที่ถูกย้ายตำแหน่ง diff รักษาลำดับเดิม ดังนั้นย่อหน้าที่ย้ายจะปรากฏเป็นการลบในที่หนึ่งและการเพิ่มในอีกที่หนึ่ง ให้ตรวจด้วยตาตนเอง หรือเปรียบเทียบสองส่วนแยกกัน
- ข้อความที่จัดบรรทัดใหม่ หากฉบับใหม่ถูกจัดความกว้างบรรทัดใหม่ การเปรียบเทียบเป็นรายบรรทัดจะรายงานการเปลี่ยนแปลงที่ไม่ใช่ของจริง ให้รวมบรรทัดก่อนด้วย แก้ข้อความที่วางมา แล้วจึงเปรียบเทียบ คู่มือการขึ้นบรรทัดใหม่ อธิบายกฎไว้
- อักขระที่มองไม่เห็น อักขระเหล่านี้จะปรากฏเป็นการเปลี่ยนแปลง แม้ไม่มีอะไรที่มองเห็นได้เปลี่ยนไป ลบอักขระที่มองไม่เห็น ก่อนเปรียบเทียบ
- การเขียนใหม่ทั้งหมด เมื่อเกือบทุกอย่างเปลี่ยน diff จะอ่านยาก ให้เปรียบเทียบทีละส่วน
วิธีอ่านผลลัพธ์
เริ่มจากการลบ แล้วจึงดูการเพิ่ม ตรวจตัวเลข วันที่ ชื่อ และคำปฏิเสธก่อน เพราะตัวเลขเพียงตัวเดียวที่เปลี่ยนอาจสำคัญกว่าการเขียนใหม่ทั้งหน้า ในตัวอย่างสัญญา การเปลี่ยนสองคำในประโยค 12 คำถือเป็นการแก้ไขเล็กน้อย และคำที่ทำเครื่องหมายช่วยให้เห็นได้ง่าย หากคุณกำลังเปรียบเทียบงานเขียนของตัวเองสองฉบับ เปรียบเทียบจำนวนคำ ก็ช่วยบอกได้ว่าฉบับใหม่ยาวขึ้นหรือสั้นลง
เมื่อสองฉบับมาจากคนละคน ให้ตั้งชื่อกำกับ เช่น "ฉบับร่าง 3" และ "ฉบับร่าง 4" และเก็บไฟล์เก่าไว้โดยไม่แก้ไข การอ่านการเปลี่ยนแปลงตามลำดับจากบนลงล่างช่วยให้ติดตามได้ว่าเนื้อหาหรือข้อกำหนดเคลื่อนไปอย่างไรในแต่ละการแก้ไข วิธีนี้ช้ากว่าการกวาดหาการเปลี่ยนแปลงที่ใหญ่ที่สุด แต่มีโอกาสพลาดการเปลี่ยนเล็ก ๆ น้อยกว่า
การเปรียบเทียบแบบบรรทัดไม่เหมาะกับข้อมูลที่มีโครงสร้าง เพราะการเปลี่ยนเซลล์เพียงเซลล์เดียวอาจเลื่อนทั้งแถวและทุกบรรทัดหลังจากนั้น ให้ เปรียบเทียบไฟล์สเปรดชีตสองไฟล์ ทีละเซลล์ หรือ เปรียบเทียบไฟล์ JSON สองไฟล์ ทีละคีย์ เพื่อให้ได้รายการการเปลี่ยนแปลงที่ตรงกับข้อมูล
คำถามที่พบบ่อย
diff คืออะไร?
diff คือรายการสิ่งที่ถูกเพิ่มและลบระหว่างสองฉบับ คำนวณจากลำดับที่ยาวที่สุดที่ทั้งสองฉบับมีร่วมกัน
ควรเปรียบเทียบตามบรรทัดหรือตามคำ?
ใช้บรรทัดสำหรับโค้ดและรายการ ซึ่งแต่ละบรรทัดเป็นรายการแยกกัน ใช้คำสำหรับงานเขียนทั่วไป ซึ่งประโยคเดียวอาจเปลี่ยนอยู่ภายในย่อหน้า
ทำไม diff จึงแสดงทั้งย่อหน้าว่าเปลี่ยน?
มักเป็นเพราะการขึ้นบรรทัดใหม่ ช่องว่าง หรืออักขระที่มองไม่เห็นต่างกัน ให้ไม่สนใจช่องว่าง จัดการการขึ้นบรรทัดใหม่ หรือลบอักขระที่มองไม่เห็น แล้วเปรียบเทียบอีกครั้ง
แปลจาก ฉบับภาษาอังกฤษ ด้วยความช่วยเหลือของ AI
ความคิดเห็น
ยังไม่มีความคิดเห็น มาเป็นคนแรกกันเลย


