ARTICLESSPORTLIGHT

Visual Diff 101 ตอนที่ 1 : Meld เช็กไฟล์ต่าง ฉบับ Standalone

Hightlight

พิกัดโปรแกรม: ดาวน์โหลดมาใช้งานฟรีได้ที่ meldmerge.org

ปัญหาชวนปวดหัว: การเปรียบเทียบโค้ด (Diff) ด้วยตาเปล่าผ่าน VS Code สองหน้าต่าง หรือจอดำบน Terminal มักทำให้ล้าสายตา มองข้ามจุดผิดพลาด และเสียเวลาชีวิตโดยไม่จำเป็น
Meld คือทางออก: เครื่องมือ Visual Diff หน้าตาคล้าย GUI ที่จะจับโค้ด 2 ฝั่งมาวางขนานกัน Side-by-Side ไฮไลต์สีให้เห็นส่วนเพิ่ม ลบ หรือแก้ไขอย่างชัดเจนในคลิกเดียว
ไม่ง้อ Git ก็ใช้ได้: Meld สามารถรันแบบ Standalone เพื่อเปรียบเทียบไฟล์หรือโฟลเดอร์ทั่วไปนอกระบบ Git ได้ทันทีผ่าน Command Line เช่น meld file1.py file2.py หรือ meld folder1 folder2

In Detail

เคยไหมครับ? ในโลกของการเขียนโค้ด บักที่รับมือยากที่สุดไม่ใช่บักที่เด้ง Error สีแดงเตือนชัดเจน… แต่คือบักประเภท “เมื่อวานระบบยังรันได้ดีๆ แต่วันนี้กลับพัง ทั้งๆ ที่เราคิดว่าไม่ได้แก้อะไรเลย”

พอเจอปัญหานี้ สิ่งแรกที่ Dev ทุกคนต้องทำคือสวมวิญญาณนักสืบหาจุดแตกต่างของโค้ด (Diff) แต่เส้นทางจับผิดนี้กลับเต็มไปด้วยความล้าและเสี่ยงต่อการมองพลาด:

  • เพ่ง Terminal บน git diff : นั่งจ้องบรรทัดสีแดง-เขียวบนจอดำที่เรียงยาวเป็นตับ ยิ่งไฟล์ยาว คีย์ลัดอย่าง space, b หรือ q ก็ช่วยอะไรไม่ได้มาก เพราะมันมองไม่เห็น “ภาพรวม”
  • เปิด VS Code วางเทียบ 2 หน้าต่าง : กวาดสายตามองสลับซ้าย-ขวาเหมือนเล่นเกมจับผิดภาพไฟล์ต่อไฟล์ มองข้ามแค่จุดเล็กๆ อย่างเครื่องหมายหรือตัวแปรไปนิดเดียว ก็ทำเอาหลงทางเสียเวลาไปหลายชั่วโมง

ความปวดหัวทั้งหมดนี้เกิดขึ้นเพราะเรากำลังใช้ “ตาเปล่า” นั่งจับผิดโค้ดอยู่… และนี่คือจุดเริ่มต้นที่เราต้องดึง Meld เข้ามาเป็นพระเอกช่วยเซฟเวลาชีวิตครับ!

Meld คือเครื่องมือสำหรับเปรียบเทียบและรวมไฟล์ (Visual Diff & Merge Tool) ที่ช่วยให้เรามองเห็นความแตกต่างของไฟล์ผ่าน Graphical User Interface (GUI) ได้อย่างชัดเจน

แทนที่จะต้องนั่งไล่ดูข้อความยาว ๆ หรือสลับหน้าต่างไปมา Meld จะแสดงไฟล์ที่ต้องการเปรียบเทียบแบบ Side-by-Side พร้อมไฮไลต์ส่วนที่มีการเปลี่ยนแปลง ทำให้เราสามารถมองเห็นได้ทันทีว่าบรรทัดไหนถูกเพิ่ม ลบ หรือแก้ไข

จุดเด่นที่ช่วยให้การเปรียบเทียบไฟล์ทำได้ง่ายขึ้น ได้แก่

  • เห็นความแตกต่างได้ชัดเจน: Meld จะไฮไลต์ส่วนที่มีการเปลี่ยนแปลงระหว่างไฟล์ ทำให้สามารถไล่ตรวจสอบ Diff ได้ง่ายขึ้น โดยไม่ต้องอ่านโค้ดทุกบรรทัดด้วยตัวเอง
  • Merge การเปลี่ยนแปลงได้โดยตรง: หากต้องการนำการเปลี่ยนแปลงจากไฟล์หนึ่งไปยังอีกไฟล์ สามารถใช้ปุ่มลูกศรเพื่อเลือกและนำโค้ดจากแต่ละฝั่งมารวมกันได้ โดยไม่ต้อง Copy-Paste ด้วยตัวเอง

เมื่อเข้าใจหลักการทำงานของ Meld แล้ว ลองมาดูกันครับว่าเครื่องมือนี้สามารถนำไปใช้กับงานอะไรได้บ้าง

  • เปรียบเทียบไฟล์ 2 ไฟล์ (2-Way Comparison) — ตรวจสอบความแตกต่างระหว่างไฟล์สองเวอร์ชัน เช่น ไฟล์ก่อนและหลังการแก้ไข
  • เปรียบเทียบไฟล์ 3 ไฟล์ (3-Way Comparison) — ดูความแตกต่างระหว่างไฟล์สามเวอร์ชัน ซึ่งมีประโยชน์กับงาน Merge และการจัดการการเปลี่ยนแปลงจากหลาย Branch
  • Merge การเปลี่ยนแปลง — เลือกการเปลี่ยนแปลงจากแต่ละฝั่งเพื่อนำมารวมเป็นไฟล์ผลลัพธ์
  • เปรียบเทียบ Folder — ตรวจสอบว่าไฟล์หรือโครงสร้างภายใน Folder สองชุดมีอะไรแตกต่างกันบ้าง
  • ทำงานร่วมกับ Git — ใช้ Meld เป็น Visual Diff และ Merge Tool เพื่อช่วยตรวจสอบและจัดการการเปลี่ยนแปลงจาก Git

พูดง่าย ๆ คือ Meld ไม่ได้จำกัดอยู่แค่การดูว่า “ไฟล์สองไฟล์ต่างกันตรงไหน” แต่ยังช่วยในขั้นตอน ตรวจสอบ เปรียบเทียบ และรวมการเปลี่ยนแปลง ได้ด้วย

ในหัวข้อถัดไป เราจะลองใช้งาน Meld กับไฟล์จริง ตั้งแต่การเปรียบเทียบไฟล์แบบ 2 ฝั่ง ไปจนถึงการเปรียบเทียบแบบ 3 ฝั่ง และการ Merge โค้ดครับ

1. ให้ทำการกด (Windows + R) และพิมพ์ cmd จากนั้นให้ดำเนินการตามขั้นตอนต่อไป

    call command prompt by windows + R
    รูป 1 เรียก command prompt

    2. พิมพ์ meld บน Command prompt จะเรียก meld มาใช้งาน

    Run meld thru cmd
    รูป 2 เรียก meld ผ่าน command prompt

    หรือ เรียกเมนูบน Windows

    Call meld with windows menu
    รุปที่ 3 การเรียก meld ผ่านเมนูของ windows

    ⬇️ ถ้าไม่มี meld ให้ทำการ download ได้จาก Meld


      หลังจากรู้จักความสามารถของ Meld และติดตั้งโปรแกรมเรียบร้อยแล้ว ลองมาดูการใช้งานจริงกัน

      กรณีแรกที่น่าจะได้ใช้งานบ่อย คือ การเปรียบเทียบไฟล์ 2 ไฟล์ หรือที่เรียกว่า 2-Way Comparison

      สมมติว่าเรามีไฟล์โค้ดอยู่ 2 เวอร์ชัน และต้องการตรวจสอบว่ามีอะไรเปลี่ยนแปลงไปบ้าง แทนที่จะเปิดไฟล์ทั้งสองใน Editor แล้วสลับไปมาด้วยตัวเอง เราสามารถใช้ Meld เพื่อแสดงความแตกต่างของไฟล์ทั้งสองพร้อมกันได้

      1. เปิด Meld และเลือก File Comparison

      เมื่อเปิด Meld ขึ้นมา เราจะพบหน้าหลักที่มีตัวเลือกสำหรับการเปรียบเทียบไฟล์และ Folder

      ในกรณีนี้ให้เลือก File Comparison เพื่อเริ่มเปรียบเทียบไฟล์

      เปิด meld เพื่อเปรีนยเทียบ
      รูป 4 เปิด meld เพื่อทำการเปรียบเทียบไฟล์

      2. เลือกไฟล์ที่ต้องการเปรียบเทียบ

      ในหน้าจอ File Comparison จะมีช่องสำหรับเลือกไฟล์ทั้งสองฝั่ง ให้เลือกไฟล์ที่ต้องการเปรียบเทียบ แล้วกด Compare

      เลือกไฟล์ meld ที่ต้องการเปรียบเทียบ
      รูป 5 เลือกไฟล์ที่ต้องการเปรียบเทียบ

      Meld สามารถเปรียบเทียบไฟล์ที่อยู่คนละ Folder หรืออยู่คนละตำแหน่งบนเครื่องได้

      3. หลังจากเลือกไฟล์แล้ว Meld จะแสดงไฟล์ทั้งสองฝั่งแบบ Side-by-Side ทำให้สามารถดูเนื้อหาของไฟล์พร้อมกันได้

      ส่วนที่มีการเปลี่ยนแปลงจะถูก Highlight ให้เห็นอย่างชัดเจน พร้อมมีเส้นเชื่อมโยงระหว่างส่วนที่แตกต่างกันของไฟล์ทั้งสองฝั่ง

      ทำให้เราสามารถตรวจสอบได้ว่า

      • มีบรรทัดไหนถูกเพิ่มเข้ามา
      • มีบรรทัดไหนถูกลบออก
      • มีโค้ดส่วนไหนถูกแก้ไข
      • การเปลี่ยนแปลงเกิดขึ้นบริเวณใดของไฟล์

      meld เปรียบเทียบ 2 ไฟล์
      รูป 6 meld เปรียบเทียบ 2 ไฟล์

      จุดนี้เป็นส่วนที่ Meld ช่วยลดภาระในการอ่าน Diff ได้อย่างชัดเจน เพราะเราไม่จำเป็นต้องไล่ค้นหาความแตกต่างทีละบรรทัดด้วยตัวเอง แต่สามารถสังเกตตำแหน่งที่มีการเปลี่ยนแปลงได้จากการ Highlight และเส้นเชื่อมโยงระหว่างไฟล์ทั้งสองฝั่ง

      วิธีการแสดง Diff ของ Meld จะเน้นให้เห็นทั้ง ตำแหน่งของการเปลี่ยนแปลง และ ความสัมพันธ์ระหว่างส่วนที่แตกต่างกัน ทำให้สามารถทำความเข้าใจได้ง่ายขึ้นว่าแต่ละส่วนของไฟล์มีการเปลี่ยนแปลงอย่างไร

      meld Highlight ตำแหน่งที่เปรียบเทียบ
      รูป 7 แสดง Highlight และเส้นเชื่อมโยงของ Diff

      การอ่าน Diff ใน Meld สามารถสังเกตได้จาก ตำแหน่งของ Highlight จำนวนบรรทัด และเส้นเชื่อมโยงระหว่างไฟล์ โดยลักษณะที่พบได้บ่อยมีดังนี้

      เลช 1 มีการเพิ่มหรือลบบรรทัด (Add / Remove) — หากมีข้อความอยู่เพียงฝั่งเดียว จะเห็น Highlight อยู่เฉพาะฝั่งนั้น พร้อมมีเส้นเชื่อมโยงไปยังตำแหน่งที่เกี่ยวข้องของอีกฝั่ง ซึ่งอีกฝั่งอาจไม่มีบรรทัดที่ตรงกัน

      เลช 2 จำนวนบรรทัดของสองฝั่งไม่เท่ากัน — หากส่วนที่เปรียบเทียบกันมีจำนวนบรรทัดแตกต่างกัน ขนาดของ Highlight ในแต่ละฝั่งก็อาจแตกต่างกันตามจำนวนบรรทัดที่เพิ่มหรือลด ทำให้สังเกตความแตกต่างของโครงสร้างได้ง่ายขึ้น

      เลข 3 มีการแก้ไขข้อความ (Edit / Modify) — หากเนื้อหาของบรรทัดเดิมมีการเปลี่ยนแปลง Meld จะแสดง Highlight ให้เห็นความแตกต่างของเนื้อหาที่เปลี่ยนไปในบริเวณนั้น

        นอกจากใช้สำหรับดูความแตกต่างแล้ว Meld ยังสามารถนำการเปลี่ยนแปลงจากไฟล์หนึ่งไปยังอีกไฟล์ได้โดยตรง

        บริเวณระหว่างไฟล์ทั้งสองจะมีปุ่มลูกศรสำหรับ Merge การเปลี่ยนแปลง ไปยังอีกฝั่ง เราสามารถเลือก Merge เฉพาะ Diff ที่ต้องการได้ทีละส่วน โดยไม่จำเป็นต้อง Copy-Paste โค้ดด้วยตัวเอง

        Meld ลูกศรสำหรับ Merge
        รูป 8 ลูกศรแสดงทิศทางการ Merge

        วิธีนี้ช่วยให้เราสามารถตรวจสอบแต่ละ Diff ก่อนตัดสินใจว่าจะนำการเปลี่ยนแปลงส่วนใดไปใช้ ทำให้ควบคุมการ Merge ได้ละเอียดมากขึ้น

        นอกจากนี้ หากมีการเปลี่ยนแปลงหลายจุดและต้องการนำไปยังอีกฝั่งพร้อมกัน Meld ยังมีคำสั่ง Merge All Left และ Merge All Right สำหรับจัดการการเปลี่ยนแปลงหลายส่วนในครั้งเดียว

        • Merge All Right — Merge การเปลี่ยนแปลงไปยังไฟล์ฝั่งขวา
        • Merge All Left — Merge การเปลี่ยนแปลงไปยังไฟล์ฝั่งซ้าย

        คำสั่งเหล่านี้ช่วยลดขั้นตอนการ Merge เมื่อมี Diff หลายจุด โดยไม่ต้องกดปุ่มลูกศรทีละจุด

        Meld เมนูย่อย Merge All
        รูป 9 การเข้าเมนู Merge All

        Meld Merge All
        รูป 10 การเข้าเมนู Merge All from left / right

        ในสถานการณ์จริง บางครั้งเราต้องทำงานกับไฟล์ที่มีการแก้ไขมาจากหลายเวอร์ชัน โดยเฉพาะเมื่อทำงานร่วมกับ Git และมีการเปลี่ยนแปลงจากหลาย Branch

        ในกรณีนี้ การเปรียบเทียบไฟล์เพียง 2 ไฟล์อาจไม่เพียงพอ เพราะเราอาจต้องการดูว่า แต่ละฝั่งมีการแก้ไขอะไรจากไฟล์ต้นฉบับบ้าง และมีส่วนใดที่แตกต่างกันระหว่างทั้งสองฝั่ง

        Meld จึงมีความสามารถ 3-Way Comparison ที่ช่วยให้เรานำไฟล์ 3 เวอร์ชันมาเปรียบเทียบพร้อมกันได้

        3-Way Comparison คือการเปรียบเทียบไฟล์ 3 เวอร์ชันพร้อมกัน โดยทั่วไปจะประกอบด้วย ไฟล์ต้นฉบับ (Original) และไฟล์ที่ถูกแก้ไขจากอีกสองฝั่ง (Left และ Right)

        แนวคิดสำคัญของ 3-Way Comparison คือการใช้ไฟล์ต้นฉบับเป็นจุดอ้างอิง เพื่อให้เห็นว่าไฟล์แต่ละฝั่งมีการเปลี่ยนแปลงจากต้นฉบับอย่างไร และช่วยให้สามารถตรวจสอบความแตกต่างระหว่างการแก้ไขของทั้งสองฝั่งได้ง่ายขึ้น โดยขั้นการทำงานไกล้เคียงกับการเปรียบเทียบ 2 ไฟล์เพียงแต่ต้องติ๊กที่ช่อง 3-Way Comparison

        ขั้นตอนการเลือกเปรียบเทียบ 3 ไฟล์ของ Meld
        รูป 11 ขั้นตอนการเปรียบเทียบ 3 ไฟล์

        เมื่อเปิดแบบ 3-Way Comparison Meld จะแสดงไฟล์ทั้ง 3 ไฟล์พร้อมกัน ทำให้สามารถดูความสัมพันธ์ระหว่างไฟล์ต้นฉบับและไฟล์ที่ถูกแก้ไขจากทั้งสองฝั่งได้ในหน้าจอเดียว

        Meld 3-Way Comparison
        รูป 12 แสดง 3-Way Comparison

        นอกจากการเปิดไฟล์ผ่านหน้าหลักของ Meld แล้ว เรายังสามารถเปิดไฟล์ 3 ไฟล์เพื่อเปรียบเทียบผ่าน Command Line ได้โดยตรง

        1. เปิด Command Prompt
        1. ใช้คำสั่ง meld ตามด้วยชื่อหรือ Path ของไฟล์ทั้ง 3 ไฟล์

        PowerShell
        meld <file1> <file2> 

        หรือ

        PowerShell
        meld <path/file1> <path/file1>

        ตัวอย่างเช่น

        PowerShell
        meld d:\test\python\meld_diff\diff.py d:\test\python\meld_diff\diff2.py
        

        Meld ทำงานด้วย command prompt
        รูป 13 แสดงการเรียก Meld ผ่าน Command prompt

        Meld จะเปิดหน้าต่างเปรียบเทียบและแสดงไฟล์ทั้ง 2 ฝั่งเพื่อให้สามารถตรวจสอบความแตกต่างและการเปลี่ยนแปลงของแต่ละเวอร์ชันได้

        นอกจากการเปรียบเทียบไฟล์แล้ว Meld ยังสามารถเปรียบเทียบ Folder ได้อีกด้วย ฟีเจอร์นี้เหมาะสำหรับกรณีที่เรามี Folder ของโปรเจกต์หลายเวอร์ชัน เช่น Project_v1 และ Project_v2 และต้องการตรวจสอบว่าแต่ละเวอร์ชันมีไฟล์ใดถูกเพิ่ม แก้ไข หรือลบออกไปบ้าง

        การเปรียบเทียบในระดับ Folder ช่วยให้เราเห็นภาพรวมของความแตกต่างได้ก่อน จากนั้นจึงสามารถเลือกเข้าไปดูรายละเอียดของไฟล์ที่มีการเปลี่ยนแปลงได้

        1. เลือก Folder Comparison

        เปิด Meld จากนั้นเลือก Folder Comparison เพื่อเริ่มเปรียบเทียบ Folder

        Meld เปรียบเทียบ Folder
        รูป 14 Meld เปรียบเทียบทั้ง Folder

        2. เลือก Folder ที่ต้องการเปรียบเทียบทั้งสองฝั่ง จากนั้นกด Compare

        Meld การทำงานเปรียบเทียบ Folder
        รูป 15 Meld ขั้นตอนเปรียบเทียบทั้ง Folder

        3. ดูผลการเปรียบเทียบ Folder

        Meld จะแสดงรายการไฟล์และ Folder ของทั้งสองฝั่ง พร้อมแสดงความแตกต่างที่พบ ทำให้สามารถตรวจสอบได้ว่าไฟล์ใดมีการเปลี่ยนแปลง หรือมีไฟล์ที่มีอยู่เฉพาะในฝั่งใดฝั่งหนึ่ง

        Meld ผลการเปรียบเทียบ Folder
        รูป 15 ผลการเปรียบเทียบของ Meld

        4. เปิดดูรายละเอียดของไฟล์

        หากต้องการดูรายละเอียดเพิ่มเติม สามารถ Double-click ที่ไฟล์หรือ Folder ที่ต้องการตรวจสอบได้

        ในกรณีที่เลือก Folder สามารถเข้าไปดูไฟล์ภายในและตรวจสอบความแตกต่างในระดับที่ละเอียดขึ้นได้

        Meld แสดงผลเปรียบเทียบ Folder
        รูป 16 แสดงผลการเปรียบเทียบ Folder

        5. ตรวจสอบความแตกต่างของไฟล์

        เมื่อเลือกไฟล์ที่มีการเปลี่ยนแปลง Meld จะเปิดหน้าต่างเปรียบเทียบไฟล์แบบ Side-by-Side เพื่อแสดงรายละเอียดของ Diff ทำให้สามารถตรวจสอบได้ว่าโค้ดส่วนใดถูกเพิ่ม ลบ หรือแก้ไข

        Meld ดูรายละเอียดของการเปรียบเทียบ Folder
        รูป 17 แสดงการเปรียบเทียบหลังเลือก Folder ของ Meld

        นอกจากการเลือก Folder ผ่านหน้าหลักของ Meld แล้ว เรายังสามารถเปิดการเปรียบเทียบ Folder ผ่าน Command Prompt ได้โดยตรง เหมาะสำหรับกรณีที่ต้องการเปิดการเปรียบเทียบจากตำแหน่งหรือ Path ที่กำหนด

        1. เปิด Command Prompt
        2. ใช้คำสั่ง meld ตามด้วย Path ของ Folder ที่ต้องการเปรียบเทียบทั้งสองฝั่ง

        PowerShell
        meld <folder1> <folder2>
        

        ตัวอย่างเช่น

        PowerShell
        meld Project_v1 Project_v2
        

        Meld จะเปิดหน้าต่าง Folder Comparison และแสดงความแตกต่างของ Folder ทั้งสองฝั่งให้ตรวจสอบได้ทันที

        Meld เปรียบเทียบ Folder ผ่าน command prompt
        รูป 18 แสดงการเปรียบเทียบหลังเลือก Folder ของ Meld ผ่าน Command prompt


        สรุปส่งท้าย

        จากที่เราได้ลองใช้งานกันมา Meld ช่วยให้การเปรียบเทียบโค้ดทำได้สะดวกขึ้น โดยเฉพาะการแสดงความแตกต่างแบบ Side-by-Side ที่ช่วยให้มองเห็นตำแหน่งและรายละเอียดของการเปลี่ยนแปลงได้ชัดเจนกว่าการตรวจสอบไฟล์ด้วยตัวเอง

        นอกจากการเปรียบเทียบไฟล์แบบ 2-Way Comparison แล้ว Meld ยังรองรับ 3-Way Comparison, การ Merge การเปลี่ยนแปลง และการเปรียบเทียบ Folder ทำให้สามารถนำไปใช้กับงานตรวจสอบและจัดการไฟล์ในหลายสถานการณ์ได้

        อย่างไรก็ตาม ความสามารถของ Meld ไม่ได้จำกัดอยู่เพียงการใช้งานแบบ Standalone เท่านั้น เพราะเรายังสามารถนำ Meld มาใช้งานร่วมกับ Git เพื่อช่วยในการตรวจสอบความแตกต่างของโค้ด และจัดการกับ Merge Conflict ได้อีกด้วย

        ในตอนถัดไป เราจะมาดูวิธีตั้งค่าและใช้งาน Meld ร่วมกับ Git ตั้งแต่ git difftool สำหรับเปิด Diff ด้วย Meld ไปจนถึงการใช้ Meld เป็น git mergetool เพื่อช่วยจัดการ Merge Conflict ในสถานการณ์จริง

        Written by Pawinphat Charoenrat


        my avatar

        Pawinphat Charoenrat

        Founder of Bunpajarn.com • Electronics & Embedded Systems

        Leave a Reply

        Your email address will not be published. Required fields are marked *