Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

Git ปฏิเสธการ Merge Unrelated Histories: สาเหตุและวิธีแก้

ในขั้นตอนการทำงานกับ Git มีหลายจุดที่อาจทำให้เกิดข้อผิดพลาด บทความนี้จะพูดถึงข้อผิดพลาดหนึ่งที่ทำให้สับสนและหาวิธีแก้ไขได้ยาก คือ fatal: refusing to merge unrelated histories

ข้อผิดพลาดของ Git

ข้อผิดพลาด fatal: refusing to merge unrelated histories เกิดขึ้นเมื่อคุณ Clone โปรเจกต์จาก Git Repository แล้วที่อยู่ .git directory ถูกลบหรือเสียหาย ไปในภายหลัง

ไดเรกทอรี .git นี้คือกลไกที่ Version Control ใช้ติดตามการเปลี่ยนแปลงจาก Remote Repository คุณสามารถเห็นไดเรกทอรีนี้ได้โดยใช้คำสั่ง ls -a ใน Root Directory ของ Local Repository รายการที่ได้จะแสดง .git directory ไว้

เนื่องจาก .git directory เสียหายหรือถูกลบ ทำให้ Version Control ไม่รู้จักประวัติ Local และจะโยนข้อผิดพลาด merge unrelated histories เมื่อคุณ push หรือ pull จาก Remote Repo

วิธีแก้ไข

วิธีแก้ของ Git คือการ pull Remote Repo เข้ามาในโปรเจกต์พร้อมกับ flag --allow-unrelated-histories เพื่อข้ามการตรวจสอบประวัติ

git pull origin master --allow-unrelated-histories

คำสั่งนี้อนุญาตให้โปรเจกต์ทั้งสอง merge กันได้แม้ประวัติ Git จะไม่ตรงกัน ข้อมูลเพิ่มเติมสามารถอ่านได้จากเอกสารอย่างเป็นทางการของ Git

หากลอง push หลังจากรันคำสั่ง pull แล้ว ควรจะสามารถทำได้ปกติ