ข้ามไปยังเนื้อหา
Tayakorn
Git Handbook

Git Handbook

LEVEL 1 · พื้นฐานที่ใช้ทุกวัน

Branch & Merge

Branch คือสิ่งที่ทำให้ Git เปลี่ยนวิธีทำงานของคนทั้งวงการ แต่คนส่วนใหญ่เข้าใจมันซับซ้อนเกินจริง ความจริงนั้นเรียบง่ายมาก

4.1 Branch คือป้ายชี้ ไม่ใช่สำเนา

หลายคนคิดว่าสร้าง branch คือก๊อปโปรเจกต์ทั้งชุด ผิดอย่างสิ้นเชิง branch เป็นเพียงป้ายเล็ก ๆ ที่ชี้ไปยัง commit หนึ่งดวง — เบาแค่ไฟล์ข้อความที่เก็บรหัส SHA หนึ่งบรรทัด นี่คือเหตุผลที่สร้าง branch ใหม่เร็วทันใจและแทบไม่กินที่เลย ส่วน HEAD คือป้ายพิเศษที่บอกว่า "ตอนนี้คุณกำลังยืนอยู่ที่ branch ไหน"

ABCDmainfeatureHEAD
FIG 4.1 commit ต่อกันเป็นสายโซ่ แต่ละดวงชี้กลับไปหา commit ก่อนหน้า · ที่นี่ HEAD อยู่ที่ feature ไม่ใช่ main
$ git switch -c feature     # สร้าง branch ใหม่ + ย้ายไปยืนที่นั่น
$ git switch main          # ย้ายกลับมา main (HEAD ขยับ)

เมื่อ HEAD ขยับไป branch ไหน Git จะปรับไฟล์ในโฟลเดอร์ให้ตรงกับภาพถ่ายของ branch นั้นทันที — คุณจึงทดลองบน feature ได้อย่างอิสระโดย main ไม่กระทบเลย

4.2 Merge — รวมเส้นทางกลับเข้าด้วยกัน

เมื่องานบน feature เสร็จ ก็รวมกลับเข้า main ด้วย merge ซึ่งมีสองหน้าตาขึ้นกับสถานการณ์:

Fast-forwardmain ไม่มีอะไรใหม่ — แค่เลื่อนป้ายABCmain ←เลื่อนมาที่นี่Merge commitทั้งสองสายมีงานใหม่ — สร้าง commit รวมABDEMmerge
FIG 4.2 ถ้า main ไม่มี commit ใหม่นับจากจุดแตก Git แค่เลื่อนป้าย (fast-forward) · ถ้าทั้งสองสายต่างมีงานใหม่ Git สร้าง merge commit ที่มี “พ่อแม่สองคน” เพื่อผูกประวัติเข้าด้วยกัน

สรุปบทที่ 4 — branch = ป้ายชี้ commit ที่เบาและสร้างเร็ว ไม่ใช่สำเนาโปรเจกต์ · HEAD = ตำแหน่งที่คุณยืนอยู่ · switch ขยับ HEAD และปรับไฟล์ให้ตรง branch · merge มีสองแบบ: fast-forward (เลื่อนป้าย) และ merge commit (รวมสองสายที่ต่างมีงานใหม่)

อ่านแบบเต็มเล่ม