เหตุการณ์สมมุติคือ ใน git repo เดียวกัน มี Dev 2 คน กำลังแก้ไฟล์เดียวกัน Dev คนแรกแก้ไข commit และ push ขึ้น git repo เรียบร้อย แต่มี Dev คนที่ 2 คือคุณเอง มาแก้ไข code บรรทัดเดียวกันกับคนแรกที่เพิ่งแก้ไป
1.หลังจากนั้นคุณก็มีการแก้ไขไฟล์ ทำการ Add และ Commit เสร็จ ใน Source Control ถ้า git repo มีอัพเดทใหม่ จะขึ้นปุ่ม Sync Change ให้เรากด
แต่พอกด Sync Change พบว่าเจอ Popup แบบนี้
2.ให้กดปุ่ม Show Command Output เพื่อดูว่าเกิดอะไรขึ้น ปรากฏว่ามี git error แบบนี้
ลองสั่ง git pull ใน Terminal ก็ขึ้นมาเหมือนกัน
3.ในข้อความ hint อยากให้คุณตัดสินใจว่าจะ merge หรือ rebase
เพื่อที่จะ merge conflict คุณจะต้องตั้งค่าเพื่อไม่ให้ rebase ด้วยคำสั่งนี้ใน Terminal
(ขั้นตอนนี้เราจะทำครั้งแรกครั้งเดียวเท่านั้น ของแต่ละ repo ในเครื่อง)
git config pull.rebase false
4.หลังจากนั้นกดปุ่ม Sync Change ใน Source Control อีกครั้ง หรือ สั่ง git pull ก็ใน Terminal อีกครั้งจะบบว่าไฟล์ที่เราเพิ่งแก้ไป จะมี highlight ขึ้นในบรรทัดที่ชนกัน
ให้เราตัดสินใจว่าจะเลือกฝั่งไหนหรือเอาทั้งคู่
(ถ้าสั่ง git pull ใน Terminal จะมีบอกเราด้วยว่าไฟล์ไหนมี Conflict กันบ้าง)
5.พอเราแก้ conflict เสร็จแล้ว ก็ Add (หรือเรียก Stage แล้วแต่ถนัด) และ Commit ตามปกติ จะมี popup มาถามว่าจะ merge conflicts ใช่ไหม ก็ตอบ Yes ได้เลย
6.ตอนนี้เราก็สามารถ commit และ กด Sync Change ได้ตามปกติ (หรือสั่ง git pull และ git push ใน Terminal ก็ได้)
Top comments (0)