[Git] อู้งานมาสร้าง git conflict สำหรับใครที่ยังใหม่กับการใช้ git

พอดีพึ่งได้เจอเคสที่มัน Pull แล้วเกิด Error เรื่องมีอยู่แว่ //อยู่ว่า //ก็ยังจะเล่นอีก -__-
แก้โค้ดในเครื่องที่ทำงานไปแล้ว แต่ดั๊นนน ลืม Push ก่อนจะกลับบ้าน พอไปถึงบ้านเลยเขียนซ้ำไปอีกรอบ แล้วเขียนได้เยอะกว่าเครื่องที่ทำงานไปเรียบร้อย เพื่อให้เห็นภาพมันเป็นแบบนี้ครับ
Office
- Module A,C

Notebook
- Module A, B, D, E

น่าจะพอเก็ตเน๊าะ ... คือจะ reset --hard ไปเลยมันก็ไม่ได้ เพราะในเครื่องที่ทำงานมี Module ที่เครื่อง Notebook เราไม่ได้ทำอยู่ด้วย พูดต่ออีกนิดหนึ่งก็คือ มันจะคล้ายๆกับ โค้ดชุดเดียวกันแต่ทำกันหลายคน โอเคเน๊าะ

เล่าเรื่องมาซะนาน ผมเลยจัดแจง Push โค้ดจากเครื่องที่ทำงานก่อน จากนั้นก็ Pull เครื่องใน Notebook เราจะได้หน้าตา Error แบบนี้
บางคนจับ Git ใหม่ๆเจอแบบนี้จะลน "ซวยละ Error" แต่ถ้าอ่านดีๆ มันจะบอกเราว่า เนี่ยๆ ยัง Merge ไม่ได้ ต้อง Commit ก่อนนะเว้ย

จริงๆ จุดประสงค์ของเราก็คือ ทำยังไงก็ได้ให้มันเกิด Conflict ให้ได้เพื่อจะดูว่าตรงไหนที่ควรจะ Merge กลับ

ก็ Commit ไปครับอย่าไปกลัวมัน จากนั้นก็ Pull ใหม่อีกรอบจะมีการแจ้ง Merge มาแล้วครับหน้าตาประมาณนี้
จากรูปจะเห็นว่าไฟล์ชื่อ menulst.php ตัวนี้ Merge ให้เรียบร้อยแล้ว แสดงว่าจุดที่แก้ไม่ได้อยู่บรรทัดเดียวกัน แต่กับไฟล์ที่ชื่อ bootstrap.php ตัวนี้ Merge แล้ว fail ให้แก้ Conflicts ก่อนแล้วค่อย commit กลับ

เราก็เปิดดูไฟล์เราเลยครับ หน้าตามันจะประมาณนี้
<<<<<<< HEAD
// ไฟล์จาก HEAD
=======
// ไฟล์ในเครื่องเรา
>>>>>>> 65cbf6bc478e4aac7b42d17e8e7318ec258e3545

เลขยาวๆ เป็นเลข commit จาก git ... เผื่อมองไม่เห็นภาพผมมีตัวอย่างครับ เช่นโค้ดเราเกิด Conflict ขึ้นมาเรียบร้อยละ หน้าตาแบบนี้
<?php
echo "This is echo from PHP";
<<<<<<< HEAD
// echo "Hello World";
=======
// echo "Hello Python I hate PHP";
>>>>>>> 65cbf6bc478e4aac7b42d17e8e7318ec258e3545
echo " -_-\"";

เราคิดว่าโค้ดในเครื่องเราโอเคที่สุดละ ก็แทนที่ <<<<<<< HEAD และ ======= แล้วก็ >>>>>>> ด้วยโค้ดเราไปเลยครับ ... จะเป็นแบบนี้
<?php
echo "This is echo from PHP";
echo "Hello Python I hate PHP";
echo " -_-\"";

git add, commit แล้ว push ไปได้เลยครับ เป็นอันเสร็จ แฮร่ ขอตัวไปทำงานต่อละครับ //ฟริ๊วววว

Comments