วันศุกร์ที่ 8 กันยายน พ.ศ. 2560

Basic Git part 9

Git Merge with Conflict


จงกลับไป ณ iss53



สมมติว่าแก้ไขไฟล์ index.html อีก




คราวนี้มาถึงของดี เพราะว่า iss53 นั้นท่ายากกว่า hotfix ที่ผ่านมาครับ สมมติว่าเราพอใจจะ merge มันกับ master เช่นเดียวกับชะตากรรมของ hotfix

git checkout master

git merge iss53



มันพยายามรวมกัน แต่มันรวมกันไม่ได้ เพราะว่าเกิดความไม่เข้ากันของ content ขึ้นมาเสียก่อน เรียกว่าเกิด conflict


ซึ่งเราเองต้องไปตัดสินใจแก้ไขความสับสนนี้ก่อน แล้วจึงจะสั่ง commit ได้

ให้เปิดไฟล์ index.html ดูครับ git จะทำเครื่องหมายเอาไว้ โดยแบ่งโค้ดที่มันขัดแย้งกันออกเป็นสองส่วน (บน กับ ล่าง) โดยคั้นแต่ล่ะส่วนด้วยเครื่องหมาย

=======


จาก source ส่วนบนเกิดจาก master branch ที่ header pointer ขี้อยู่ และส่วนล่างเกิดจาก iss53 branch ที่ iss53 pointer ขี้อยู่

โดยผมตัดสินใจแก้ไขให้เป็นแบบนี้ (พิจารณาแล้วลบพวกสัญลักษณ์ที่ git สร้างไว้ออกด้วยนะครับ)


แก้ไขแล้วก็ต้องสร้าง snapshot ใหม่ พิมพ์

git add index.html

จากนั้นสั่ง

git commit


อันนี้เป็นโปรแกรม vm ซึ่งคิดว่าชาว linux คงคุ้นเคยกันดี สำหรับในกรณีนี้ผมไม่ขอกล่าวถึง เราจะออกจาก vm ได้โดยการพิมพ์

:wq


เป็นอันว่าเรียบร้อย merge สำเร็จ



***หมายเหตุ
ในรูป c6 ก็คือ commit object กับ snapshot ตัวใหม่ที่เราสั่ง git add นั่นเองครับ

สุดท้ายลบ iss53 ทิ้งไป



จบแล้วสำหรับการ merge ที่เจ๊อะ conflict สวัสดีจ้า

ไม่มีความคิดเห็น:

แสดงความคิดเห็น