Git 103: แตกกิ่งก้านสาขา ทำงานร่วมกับชาวแก๊ง (Branch & Merge เบื้องต้น)

hudchew
6 tags
Git 103: แตกกิ่งก้านสาขา ทำงานร่วมกับชาวแก๊ง (Branch & Merge เบื้องต้น)

เราเดินทางมาถึงตอนสุดท้ายของซีรีส์ "พื้นฐาน Git ฉบับมือใหม่" กันแล้ว!

จากตอนที่ 1 เราเรียนรู้การใช้ Git คนเดียวในเครื่อง ตอนที่ 2 เราเอาโค้ดไปเก็บไว้บน GitHub ตอนนี้คำถามคือ... แล้วถ้าโปรเจคหนึ่งมีคนทำมากกว่า 1 คนล่ะ? จะเกิดอะไรขึ้นถ้าเรากับเพื่อนแก้ไฟล์เดียวกัน แล้ว push ขึ้นไปพร้อมๆ กัน?

บอกได้เลยว่า... เละ! โค้ดตีกันมั่วซั่วแน่นอน และนี่คือเหตุผลที่เราต้องรู้จักกับหัวใจของการทำงานเป็นทีมด้วย Git นั่นคือ Branch

ทำไมต้องมี Branch? (กิ่งก้านสาขา)

ลองนึกภาพว่าโปรเจคของเราคือ "เนื้อเรื่องหลัก" ของเกมที่สมบูรณ์อยู่แล้วในเส้นทางที่ชื่อว่า main

ถ้าเราอยากจะเพิ่ม "ฟีเจอร์ใหม่" (เช่น ทำระบบ Login) หรือแก้ "บั๊ก" บางอย่าง การเข้าไปแก้ในเนื้อเรื่องหลักโดยตรงเลยมันเสี่ยงมาก ถ้าทำพลาดขึ้นมา เกมอาจจะพังไปเลยก็ได้

Branch คือการสร้าง "เส้นทางย่อย" หรือ "กิ่ง" แยกออกมาจากเนื้อเรื่องหลัก เราสามารถไปผจญภัยทำเควสรอง (ฟีเจอร์ใหม่) ในกิ่งของเราได้อย่างอิสระ จะแก้โค้ด จะทดลองอะไรก็ทำไปได้เลยเต็มที่ โดยไม่กระทบกับเนื้อเรื่องหลักที่ยังคงสมบูรณ์อยู่ และเมื่อเราทำเควสรองสำเร็จแล้ว ค่อยเอามารวม (Merge) กลับเข้าไปในเนื้อเรื่องหลักทีหลัง

นี่แหละคือคอนเซ็ปต์ของการใช้ Branch!

คำสั่งพื้นฐานของการแตกกิ่ง

  • git branch [ชื่อกิ่ง]: สร้างกิ่งใหม่ขึ้นมาเฉยๆ (แต่ตัวเรายังอยู่ที่เดิม)
  • git switch [ชื่อกิ่ง]: วาร์ปตัวเองไปทำงานที่กิ่งนั้นๆ (คำสั่งใหม่ใช้ง่ายกว่า checkout)
  • git switch -c [ชื่อกิ่ง]: ท่าไม้ตาย! เป็นการ "สร้างกิ่งใหม่" และ "วาร์ปไปที่นั่น" ในคำสั่งเดียว (-c ย่อมาจาก create)

Workflow การทำงานกับ Branch แบบง่ายที่สุด

สมมติว่าเราได้รับมอบหมายให้ทำหน้า About Us ใหม่ ขั้นตอนการทำงานจะเป็นแบบนี้:

1. กลับไปที่เนื้อเรื่องหลักและอัปเดตให้ล่าสุดเสมอ

ก่อนจะเริ่มงานใหม่ทุกครั้ง ให้กลับไปที่กิ่ง main แล้วดึงโค้ดล่าสุดจาก GitHub ลงมาก่อน เพื่อให้แน่ใจว่าเราเริ่มจากจุดที่อัปเดตที่สุด

git switch main
git pull origin main

2. สร้างกิ่งใหม่สำหรับงานของเรา

ตั้งชื่อกิ่งให้สื่อว่าเรากำลังจะทำอะไร เช่น feature/about-us-page

git switch -c feature/about-us-page

ตอนนี้เราวาร์ปมาอยู่ในกิ่งใหม่แล้ว พร้อมลุย!

3. ทำงานของเราไปตามปกติ

สร้างไฟล์ แก้โค้ด แล้วก็ใช้คอมโบเดิมที่คุ้นเคย add และ commit ไปเรื่อยๆ ในกิ่งของเราได้เลย

# ...เขียนโค้ดหน้า About Us...
git add .
git commit -m "เพิ่มโครงสร้างหน้า About Us"
# ...เขียนโค้ดเพิ่ม...
git add .
git commit -m "ใส่เนื้อหาและรูปภาพในหน้า About Us"

4. ส่งกิ่งของเราขึ้น GitHub

เมื่อทำงานในส่วนของเราเสร็จแล้ว ก็ถึงเวลาส่ง "เควสรอง" ของเราขึ้นไปอวดชาวบ้านบน GitHub

git push origin feature/about-us-page

หัวใจของการทำงานเป็นทีม: Pull Request (PR)

เมื่อเรา push กิ่งของเราขึ้นไปบน GitHub เราจะเห็นปุ่มสีเขียวๆ เขียนว่า "Compare & pull request" โผล่ขึ้นมา

Pull Request (PR) คือการ "ยื่นเรื่องขอรวมโค้ด" ของเรากลับเข้าไปในเนื้อเรื่องหลัก (main) มันไม่ใช่แค่การกดปุ่มรวมเฉยๆ แต่มันคือพื้นที่สำหรับ "การคุยกัน" ของทีม

ในหน้า PR เราสามารถ:

  • เขียนอธิบายว่าเราทำอะไรไปบ้าง
  • แปะภาพหน้าจอผลลัพธ์
  • Mention (@) เพื่อนในทีมให้มาช่วยดูโค้ด (Code Review)

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

Merge: รวมร่าง!

เมื่อทุกคนในทีมเห็นตรงกันว่าโค้ดในกิ่งของเรานั้นยอดเยี่ยมไร้เทียมทานแล้ว (หรือที่เรียกว่า "Approve PR") ก็ถึงเวลาที่หัวหน้าทีมหรือตัวเราเอง กดปุ่ม "Merge pull request" สีเขียวๆ บน GitHub

เพียงเท่านี้ โค้ดจากกิ่ง feature/about-us-page ของเราก็จะถูกนำไปรวมกับกิ่ง main อย่างสมบูรณ์ ทำให้เนื้อเรื่องหลักของเกมมีฟีเจอร์ใหม่ที่เราสร้างขึ้นมาเรียบร้อย!

บทสรุปส่งท้าย

และนี่คือทั้งหมดของซีรีส์ Git 101-103! จากการทำงานคนเดียวในเครื่อง (commit) สู่การสำรองข้อมูลบน Cloud (push, pull) และสุดท้ายคือการทำงานร่วมกับทีมอย่างมืออาชีพ (branch, PR, merge)

แน่นอนว่า Git ยังมีความสามารถอีกมหาศาล แต่แค่ 3 ตอนนี้ก็เป็นพื้นฐานที่แข็งแรงและเพียงพอให้เราเอาไปใช้ทำงานจริงหรือทำโปรเจคกับเพื่อนๆ ได้อย่างสบายๆ แล้ว ที่เหลือก็คือการฝึกฝนใช้บ่อยๆ แล้วเราจะค่อยๆ คล่องขึ้นเอง!


📚 ซีรีส์ Git สำหรับมือใหม่

Tags

GitGitHubBranchMergeTeamworkDeveloper

Related Posts

Git 102: ส่งการบ้านขึ้น Cloud (เมื่อโค้ดไม่ได้มีแค่เราคนเดียว)
Dev Zone

Git 102: ส่งการบ้านขึ้น Cloud (เมื่อโค้ดไม่ได้มีแค่เราคนเดียว)

ในตอนที่แล้วเราสร้าง "จุดเซฟ" ให้โค้ดในเครื่องตัวเองได้แล้ว ตอนนี้ถึงเวลาเอาโค้ดของเราไปเก็บไว้บน Cloud ด้วย GitHub กัน! มาเรียนรู้วิธีเชื่อมต่อและใช้คำสั่ง push, pull, clone เพื่อให้ทำงานจากที่ไหนก็ได้

Git
Git 101: ติดตั้งไทม์แมชชีนให้โค้ดของเรา (ใช้คนเดียวยังไงให้รอด)
Dev Zone

Git 101: ติดตั้งไทม์แมชชีนให้โค้ดของเรา (ใช้คนเดียวยังไงให้รอด)

บอกลา Project-Final-v2.zip! มาเรียนรู้วิธีใช้ Git เป็น "จุดเซฟ" ให้กับโปรเจคของเรากันดีกว่า บทความนี้จะพามือใหม่ติดตั้งและใช้คำสั่งพื้นฐาน 3 อย่างที่จำเป็นที่สุดในการเริ่มควบคุมเวอร์ชันโค้ดของตัวเอง

Git
Cursor AI: สร้าง ‘สมอง’ ให้โปรเจกต์ เปลี่ยน AI ให้เป็นเพื่อนร่วมทีมสุดเฉียบ
Dev Zone

Cursor AI: สร้าง ‘สมอง’ ให้โปรเจกต์ เปลี่ยน AI ให้เป็นเพื่อนร่วมทีมสุดเฉียบ

ได้ไอเดียจาก YouTube มาต่อยอด! มาดูเทคนิคสร้าง 'สมองกลาง' และ 'ทีม AI' ด้วย Cursor AI กัน ทำให้ AI จำทุกอย่างได้ เข้าใจสไตล์ของเรา และทำงานเป็นทีมเวิร์คสุดๆ!

AI