รูปปกบทความ

1. 🎯 ตอนที่ 6: ไทม์แมชชีนของนักพัฒนา – การดูประวัติด้วย Git Log

2. 📖 เปิดฉาก (The Hook)

สวัสดีครับน้องๆ ชาว Dev ทุกคน! จิบกาแฟแก้วโปรดแล้วมาคุยกันต่อครับ เคยไหมครับเวลาทำงานเป็นทีมแล้วจู่ๆ โค้ดก็พัง บั๊กกระจาย ระบบรันไม่ขึ้น สิ่งแรกที่เรามักจะตะโกนถามกันในออฟฟิศคือ “ใครแก้โค้ดไฟล์นี้วะเนี่ย!?”

ถ้าเป็นสมัยก่อน เราคงต้องมานั่งไล่เปิดไฟล์เทียบกันทีละบรรทัดจนตาแฉะ แต่ในโลกของ Git เรามีสิ่งที่เปรียบเสมือน “ไทม์แมชชีน” ประจำโปรเจกต์ นั่นคือคำสั่ง git log ครับ คำสั่งนี้จะพาเราย้อนเวลากลับไปดูประวัติศาสตร์ทั้งหมดของ Repository ว่าใครทำอะไร ที่ไหน เมื่อไหร่ อย่างไร วันนี้พี่จะพาไปสับสวิตช์ไทม์แมชชีนเครื่องนี้ และเรียนรู้วิธีปรับแต่งหน้าปัด (Flags) ให้อ่านง่ายสไตล์ Senior Dev กันครับ!

3. 🧠 แก่นวิชา (Core Concepts)

เมื่อเราพิมพ์คำสั่ง git log แบบเพียวๆ โดยไม่มีตัวช่วย (Arguments) ใดๆ สิ่งที่ Git จะแสดงออกมาคือรายการ Commit ที่เคยเกิดขึ้นใน Repository ของเรา โดยเรียงลำดับจากเหตุการณ์ล่าสุดย้อนกลับไปยังอดีต (Reverse chronological order)

ในแต่ละบล็อกของ Commit ที่แสดงผลออกมา จะประกอบไปด้วยข้อมูล 4 ส่วนสำคัญ (Metadata) ดังนี้ครับ:

  1. Commit Hash (รหัสประจำตัว Commit): ชุดตัวอักษรและตัวเลขฐานสิบหกยาว 40 ตัว (SHA-1 Checksum) ที่ทำหน้าที่เป็นเหมือนลายนิ้วมือหรือบัตรประชาชนของ Commit นั้นๆ, ตัวเลขนี้ไม่มีทางซ้ำกันและถูกคำนวณมาจากเนื้อหาทั้งหมดใน Commit ทำให้ Git รู้ทันทีถ้ามีใครแอบมาแก้ไขไฟล์
  2. Author (ผู้เขียนโค้ด): ระบุชื่อและอีเมลของคนที่ทำการสร้าง Commit นี้ขึ้นมา (นี่แหละครับ ตัวจับคนทำระบบพัง!)
  3. Date (วันเวลา): ระบุเวลาและวันที่ที่ทำการบันทึกประวัติศาสตร์นี้ลงไป
  4. Message (ข้อความอธิบาย): ข้อความ (Commit Message) ที่โปรแกรมเมอร์เขียนอธิบายไว้ตอนที่ใช้คำสั่ง git commit -m ว่าการเปลี่ยนแปลงนี้ทำไปเพื่ออะไร
โครงสร้างข้อมูลของ Git Log

แม้ว่าโครงสร้างแบบนี้จะให้ข้อมูลครบถ้วน แต่มันก็ค่อนข้าง “รก” และยาวเหยียดเวลาโปรเจกต์เรามีเป็นร้อยเป็นพัน Commit เราจึงต้องใช้เครื่องมือเสริมที่เรียกว่า “Flag” เข้ามาช่วยจัดหน้าตาให้ดูโปรขึ้นครับ

4. 💻 ร่ายมนต์คำสั่ง (Show me the Commands)

มาดูเวทมนตร์ในการเรียกดูประวัติศาสตร์โปรเจกต์กันครับ เปิด Terminal ขึ้นมาแล้วลองพิมพ์ตามพี่ได้เลย:

# 1. ท่ามาตรฐาน: เรียกดูประวัติทั้งหมดแบบละเอียด (กดปุ่ม Spacebar เพื่อเลื่อนหน้า กด q เพื่อออก)
git log

# 2. ท่าย่อส่วน (--oneline): ยุบข้อมูลทุกอย่างให้เหลือแค่ "Hash สั้นๆ + ข้อความ Commit" ในบรรทัดเดียว
# เหมาะมากเวลาอยากกวาดสายตาดูภาพรวมของโปรเจกต์,
git log --oneline

# 3. ท่าสายสถิติ (--stat): แสดงรายชื่อไฟล์ที่ถูกแก้ไข พร้อมตัวเลขสรุปว่ามีการเพิ่ม (+) หรือลบ (-) โค้ดไปกี่บรรทัด
# เอาไว้จับผิดว่า Commit นี้มีการแก้ไฟล์ไหนไปบ้าง,
git log --stat

# 4. ท่าสายอาร์ต (--graph): วาดกราฟโครงสร้างแบบ ASCII ให้ดูว่ามีการแตก Branch หรือ Merge โค้ดกันตรงไหนบ้าง 
# ยิ่งถ้าใช้คู่กับ --oneline จะทำให้เห็นภาพรวมสวยงามและอ่านง่ายสุดๆ,
git log --graph --oneline

5. 🛡️ เคล็ดลับจากคัมภีร์ลับ (Under the Hood / Pro-Tips)

พี่มีเคล็ดลับระดับ Pro ที่อยากให้น้องๆ จำไปใช้ครับ:

  • ประวัติศาสตร์คือสายน้ำ (DAG): เบื้องหลังของประวัติ Git นั้นถูกจัดเก็บในโครงสร้างข้อมูลทางคณิตศาสตร์ที่เรียกว่า Directed Acyclic Graph (DAG) การใช้คำสั่ง git log --graph จะช่วยทำให้เรามองเห็นโครงสร้างที่ซ่อนอยู่นี้ได้ชัดเจนขึ้น ว่าใครแยกกิ่ง (Branch) ออกไปตอนไหน และใครรวมกิ่ง (Merge) กลับเข้ามาเมื่อไหร่
  • The Ultimate Combo: ถ้าน้องๆ อยากดูประวัติระดับเทพ ให้ลองใช้ท่าคอมโบยอดฮิตนี้ครับ: git log --oneline --graph --decorate --all
    • --decorate จะช่วยปะป้ายบอกว่า Branch ไหนหรือ Tag ไหนชี้อยู่ที่ Commit ไหนบ้าง,
    • --all จะดึงประวัติของทุกๆ Branch ใน Repository มาแสดงพร้อมกัน ไม่ใช่แค่ Branch ที่เรากำลังยืนอยู่ (HEAD)
  • ไม่ต้องพิมพ์ Hash เต็ม: เวลาเราจะอ้างอิงถึง Commit ไหนในคำสั่งอื่นๆ เราไม่จำเป็นต้องก๊อปปี้ Hash มาทั้ง 40 ตัวหรอกครับ Git ฉลาดพอที่จะเข้าใจ แค่เราพิมพ์ Hash 7 ตัวแรก (ซึ่งจะได้มาจากการใช้ --oneline หรือ --abbrev-commit) Git ก็หาเจอแล้วครับตราบใดที่มันไม่ซ้ำกัน,

6. 🏁 บทสรุป (To be continued…)

การใช้ git log ก็เหมือนการมีกล้องวงจรปิดชั้นดีที่คอยบันทึกทุกการเคลื่อนไหวใน Repository ของเรา เมื่อเรารู้จักใช้ Flag อย่าง --oneline, --stat และ --graph เราก็จะสามารถสืบหาต้นตอของปัญหา และเข้าใจวิวัฒนาการของโปรเจกต์ได้อย่างรวดเร็ว

ในตอนต่อไป พี่จะพาเข้าสู่หัวใจสำคัญที่สุดอีกเรื่องหนึ่งของ Git นั่นคือ “การแตกกิ่งก้านสาขา” หรือ Branching Model โลกคู่ขนานที่จะทำให้ทีมงานนับร้อยคนทำงานร่วมกันได้โดยที่โค้ดไม่ตีกัน รอติดตามความสนุกกันได้เลยครับ!


---
**ต้องการที่ปรึกษาด้านการวางระบบ DevOps และ Version Control ให้กับทีมหรือองค์กรของคุณ?**
ทีมงาน WP Solution พร้อมให้บริการออกแบบและวางระบบ CI/CD แบบครบวงจร 
ดูรายละเอียดบริการของเราได้ที่: [www.wpsolution2017.com](https://www.wpsolution2017.com)
หรือพูดคุยปรึกษาเบื้องต้นได้ที่ Line: wisit.p