การเขียนโปรแกรมในโลกจริงไม่ใช่งานที่ทำคนเดียว แต่เป็นการทำงานร่วมกันเป็นทีม Git จึงเป็นเครื่องมือสำคัญที่ช่วยให้หลายคนสามารถแก้ไขโค้ดพร้อมกันได้อย่างเป็นระบบ บทความนี้จะพานักเรียนทำความเข้าใจ 3 เรื่องหลัก ได้แก่ การใช้ Branch, การเปิด Pull Request และการแก้ปัญหา Merge Conflict
ตัวอย่างด้านล่างเป็นเพียง “สถานการณ์สมมติ” เพื่อการเรียนรู้ ไม่ใช่คำตอบของใบงานนักเรียน
ในการพัฒนาโปรแกรม ไม่ควรแก้ไขโค้ดบน main โดยตรง แต่ควรสร้างพื้นที่ทำงานของตนเองผ่าน Branch เพื่อป้องกันความผิดพลาดและให้สามารถทำงานคู่ขนานกับเพื่อนได้
git checkout -b feature/profile-pageจากนั้นสร้างไฟล์ตัวอย่างชื่อ profile.txt
My Profile
I like coding
I study at school
I learn Git
Nice to meet youเมื่อแก้ไขเสร็จให้บันทึกงานด้วยคำสั่ง
git add profile.txt
git commit -m "create profile page draft"
git push -u origin feature/profile-pagePull Request เปรียบเสมือนการส่งงานให้เพื่อนหรือครูช่วยตรวจสอบ ก่อนที่จะนำไปรวมกับงานหลัก
“การส่งการบ้านให้ครูตรวจก่อนรวมเข้างานหลัก”
ข้อดีของ Pull Request
ขั้นตอนทั่วไป
ในการทำงานเป็นทีม สิ่งที่พบได้บ่อยมากคือ Merge Conflict ซึ่งเกิดจากการที่หลายคนแก้ไขไฟล์เดียวกันพร้อมกัน Git จึงต้องให้ผู้ใช้ตัดสินใจเลือกผลลัพธ์ที่ถูกต้องด้วยตนเอง
ตัวอย่างนี้เป็นเพียงสถานการณ์จำลอง เพื่อให้นักเรียนเข้าใจแนวคิดการแก้ปัญหา
เมื่อเกิดเหตุการณ์นี้ Git จะไม่ตัดสินใจแทน แต่ให้ผู้ใช้เป็นผู้เลือกวิธีรวมโค้ด
สมมติว่ามีนักเรียน 2 คนแก้ไฟล์ README.md พร้อมกัน
Message from Student AMessage from Student Bเมื่อคนที่สองพยายาม push จะพบข้อความลักษณะนี้
! [rejected] main -> main (fetch first)
error: failed to push some refsนี่คือสัญญาณว่าจำเป็นต้อง pull งานล่าสุดก่อน
git pull origin mainGit จะแจ้งว่ามี conflict ที่ไฟล์ README.md
<<<<<<< HEAD
Message from Student B
=======
Message from Student A
>>>>>>> 7ac91dความหมายคือ
ส่วนบน = เวอร์ชันของเรา
ส่วนล่าง = เวอร์ชันจากเพื่อน
Message from Student A and Student Bจากนั้นลบเครื่องหมายพิเศษออกทั้งหมด
git add README.md
git commit -m "combine messages from both students"
git push origin mainเพียงเท่านี้ conflict ก็จะถูกแก้ไขเรียบร้อย
หลักฐานเหล่านี้คือแนวทางเดียวกับที่นักพัฒนาซอฟต์แวร์ใช้ในการทำงานจริง