Git Best Practices
This content was summarized by NotebookLM and translated into Thai by Typhoon Translate. Therefore it may contain inaccuracies.
การเลือกใช้ merge หรือ rebase ขึ้นอยู่กับขั้นตอนการทำงานของทีม และการให้ความสำคัญ ระหว่างความชัดเจนของประวัติการทำงาน กับความปลอดภัยของโค้ด
ByteMonk อธิบายความแตกต่างพื้นฐานระหว่าง git merge
และ git rebase
ซึ่งเป็นสองวิธีที่ใช้กันทั่วไปในการรวมการเปลี่ยนแปลงซอร์สโค้ดในระบบควบคุมเวอร์ชัน
Git merge
git merge
รวมสองสาขา (branches) โดยการสร้าง commit ใหม่ที่เชื่อมโยงประวัติการทำงานของทั้งสองสาขาเข้าด้วยกัน ทำให้โครงสร้างการแยกสาขาเดิมยังคงอยู่ แต่ก็อาจทำให้ commit log ดู
"รก" ขึ้นมาได้ เนื่องจากมี merge commit จำนวนมาก
Git rebase
ในทางกลับกัน git rebase
จะเขียนระวัติการทำงาน(commit history) ใหม่โดยการย้าย commits จากสาขาหนึ่งไปยังอีกสาขาหนึ่ง ทำให้ได้ประวัติการทำงานที่เป็นเส้นตรง (linear) และสะอาดกว่า
แต่ควรใช้กับสาขาที่แชร์ร่วมกันอย่างระมัดระวัง เนื่องจากจะเปลี่ยน commit ID ของ commits ที่มีอยู่แล้ว
$ git log --online --graph
สรุปการใช้งาน
ใช้ git merge สำหรับการทำงานร่วมกันบนสาขาที่แชร์ เพื่อรักษาประวัติการทำงาน และใช้ git rebase สำหรับการทำความสะอาดก่อนเปิด pull request เพื่อให้ log ดูเรียบร้อยกว่าเดิม
$ git fetch origin
$ git rebase origin/main
ใช้คำสั่ง git pull --rebase
เพื่อดึงการเปลี่ยนแปลงจาก remote repository ลงมายัง local โดยไม่สร้าง commit merge ใหม่ เช่น:
$ git pull --rebase origin main