ข้ามไปเนื้อหาหลัก
สารบัญคู่มือ · บทที่ 10 จาก 11

เก็บงานด้วย Git และ Pull Request

บทที่ 10 จาก 11 · อ่านราว 12 นาที · อัปเดต 10 ตุลาคม 2569 · ระดับเริ่มต้น

สรุปใน 3 บรรทัด

อ่านจบแล้วคุณจะ

  • ใช้คำสั่ง Git พื้นฐานบันทึกงานของตัวเองได้
  • อธิบายได้ว่า branch และ Pull Request มีไว้ทำไม
  • ย้อนกลับงานที่ผิดได้อย่างปลอดภัย

ทบทวน: commit คือจุดเซฟ

ใน บทที่ 4: เครื่องมือแรกของ dev เรารู้จัก Git แบบภาพรวมแล้ว บทนี้จะลงมือใช้จริง เริ่มจากการบันทึกงานในเครื่องของเรา แล้วค่อยไปถึงการทำงานร่วมกับคนอื่นและ agent ผ่าน Pull Request

บันทึกงานครั้งแรก

ต้องติดตั้ง Git ก่อน (ดาวน์โหลดได้ฟรีจากเว็บของ Git) แล้วเปิด terminal ในโฟลเดอร์โปรเจค เช่น โฟลเดอร์ที่มีไฟล์ index.html จากบทที่ 5

สองบรรทัดแรกใช้บอก Git ว่าเราเป็นใคร ทำแค่ครั้งเดียวต่อเครื่อง ชื่อและอีเมลนี้จะติดไปกับทุก commit

ลองพิมพ์ใน terminal ทีละบรรทัด
git config --global user.name "ชื่อของคุณ"
git config --global user.email "อีเมลของคุณ"
git init
git status
git add .
git commit -m "บันทึกงานครั้งแรก"
git log --oneline
คำสั่งทำอะไร
git initเริ่มให้ Git ดูแลโฟลเดอร์นี้
git statusดูว่ามีไฟล์ไหนเปลี่ยนไปบ้าง
git add .เลือกไฟล์ที่เปลี่ยนทั้งหมด เตรียมบันทึก
git commit -m "..."บันทึกเป็นจุดเซฟ พร้อมข้อความ
git log --onelineดูประวัติ commit แบบย่อ

ตรวจผลยังไง

ข้อความ commit ที่ดี

ข้อความ commit คือโน้ตถึงตัวเราในอนาคต และถึงทุกคนที่มาอ่านประวัติ บอกให้ได้ว่าเปลี่ยนอะไร

ไม่ดีดี
แก้เพิ่มปุ่มลบรายการ
updateให้รายการยังอยู่หลังปิดหน้า
ลองใหม่ไม่สร้างรายการเมื่อช่องพิมพ์ว่าง

หลายทีมเติมคำนำหน้าเพื่อบอกประเภทงาน เช่น feat: สำหรับฟีเจอร์ใหม่ และ fix: สำหรับแก้บั๊ก ทุก commit ของเว็บนี้ก็เขียนแบบนั้น

Branch: แยกงานออกจากงานหลัก

โปรเจคมี branch หลักหนึ่งเส้น มักชื่อ main หรือ master ซึ่งควรใช้งานได้เสมอ เวลาจะทำงานเรื่องใหม่ ให้แตก branch ออกมาก่อน เหมือนถ่ายสำเนาเอกสารไปแก้ แล้วค่อยเอาส่วนที่แก้กลับมารวม

git switch -c add-delete-button

คำสั่งนี้สร้าง branch ชื่อ add-delete-button และย้ายเข้าไปทำงานในนั้น ทุก commit หลังจากนี้จะอยู่ใน branch ใหม่ ส่วน branch หลักยังเหมือนเดิม ถ้างานไปผิดทาง ก็ทิ้ง branch นี้ได้โดยไม่กระทบงานหลักเลย

เวลาให้ agent ทำงานเรื่องใหม่ ให้แตก branch ก่อนทุกครั้ง เหมือนกับที่ต้อง commit ก่อนให้ agent ลงมือ

Pull Request: ขอรวมงาน พร้อมให้ตรวจก่อน

เมื่อทำงานใน branch เสร็จ เราจะส่ง branch ขึ้นบริการเก็บโค้ดออนไลน์ เช่น GitHub แล้วเปิด Pull Request (PR) เพื่อขอรวมงานเข้า branch หลัก หน้า PR มีสิ่งสำคัญ 3 อย่าง

  1. คำอธิบาย ว่าเปลี่ยนอะไร ตรวจอะไรแล้ว และอะไรที่ยังไม่ได้ตรวจ
  2. ความเปลี่ยนแปลงทั้งหมด ในแท็บ Files changed ซึ่งก็คือ diff ที่เราอ่านเป็นแล้วใน บทที่ 7: ตรวจงานที่ agent ทำ
  3. การตรวจอัตโนมัติ ที่รันเทสต์ทุกครั้งที่มีการส่งงาน รายละเอียดอยู่ใน บทที่ 11: เอางานขึ้นเว็บจริง

เมื่อทุกอย่างผ่าน จึงกดรวม (merge) เข้า branch หลัก

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

ลองสั่ง agent แบบนี้
เขียนคำอธิบาย Pull Request สำหรับงานใน branch นี้ ให้มีหัวข้อ:
- เปลี่ยนอะไร
- ตรวจอะไรแล้ว ด้วยวิธีไหน
- อะไรที่ยังไม่ได้ตรวจ
- ถ้ามีปัญหาหลังรวมงาน จะย้อนกลับยังไง

ตรวจผลยังไง

ย้อนกลับเมื่อพลาด

สถานการณ์ทำอย่างไร
แก้ไฟล์แล้ว ยังไม่ commit และอยากทิ้งการแก้นั้นgit restore ชื่อไฟล์ (การแก้ที่ยังไม่บันทึกจะหายไปจริง ๆ)
commit ไปแล้ว และอยากยกเลิกผลของ commit นั้นgit revert รหัสของ commit สร้าง commit ใหม่ที่ย้อนผลให้ ประวัติเดิมยังอยู่ครบ
งานใน branch ไปผิดทางทั้งหมดกลับไป branch หลัก แล้วไม่ต้องรวม branch นั้น

ข้อผิดพลาดที่พบบ่อย

  1. ทำงานบน branch หลักตรง ๆ ถ้างานพังกลางทาง งานหลักก็พังไปด้วย
  2. commit ทีเดียวก้อนใหญ่ ถ้ามีปัญหาจะหายากว่ามาจากตรงไหน และย้อนกลับเฉพาะส่วนไม่ได้
  3. ข้อความ commit ไม่มีความหมาย อีกสามเดือนจะไม่มีใครรู้ว่า "แก้" หมายถึงแก้อะไร
  4. commit ไฟล์ .env รหัสลับจะติดไปในประวัติ ดู บทที่ 9: ความปลอดภัย

เช็กความเข้าใจ

1. ทำไมควรแตก branch ก่อนให้ agent ทำงานเรื่องใหม่

2. commit ที่รวมเข้า branch หลักไปแล้วมีบั๊ก วิธีย้อนที่ปลอดภัยที่สุดคืออะไร

ร่างโดย AI แล้วตรวจและแก้โดย ปฏิภาณ เพ็งเภา · เจอจุดที่ผิดหรือล้าสมัย? แจ้งเรา