ข้อความแสดงข้อผิดพลาด “การเปลี่ยนแปลงในเครื่องของคุณกับไฟล์ต่อไปนี้จะถูกเขียนทับโดยการรวม ” เกิดขึ้นในกลไกการควบคุมเวอร์ชัน Git ข้อผิดพลาดนี้เกิดขึ้นหากคุณได้แก้ไขไฟล์ซึ่งมีการแก้ไขในที่เก็บระยะไกลด้วย
ข้อความแสดงข้อผิดพลาดนี้หลีกเลี่ยงได้ หากไม่มีไฟล์ที่ไม่ได้คอมมิตซึ่งมีการแก้ไขในที่เก็บระยะไกลด้วย เมื่อพบข้อความนี้ เป็นการดีที่สุดที่จะปรึกษาสมาชิกในทีมคนอื่นๆ และขอความเห็นจากพวกเขา ไม่ว่าคุณต้องการรวมการเปลี่ยนแปลงในเครื่องหรือเก็บเวอร์ชันไว้ในที่เก็บ วิธีที่ดีที่สุดคือให้ทุกคนมีส่วนร่วม
ที่เก็บคืออะไร? อะไรคือการผลักและดึงใน Git?
ที่เก็บคือที่เก็บข้อมูลชนิดหนึ่งสำหรับโค้ดที่สมาชิกในทีมแก้ไขและรับมาอย่างต่อเนื่องผ่านกลไกการควบคุมเวอร์ชัน GitHub 'ดึง' หมายความว่าคุณกำลังดึงที่เก็บเวอร์ชันล่าสุดไปยังที่เก็บข้อมูลในเครื่อง/IDE (Integrated Development Environment) เช่น Pycharm เป็นต้น
หลังจากดึง คุณทำการเปลี่ยนแปลงโค้ดหรือเพิ่มคุณสมบัติเพิ่มเติม เมื่อเสร็จแล้ว คุณ ‘ผลัก’ โค้ดบนที่เก็บเพื่อบันทึกการเปลี่ยนแปลงและเพิ่มเติม คนอื่นๆ สามารถเข้าถึงรหัสได้เช่นกัน
หากคุณยังใหม่ต่อการควบคุมเวอร์ชัน Github ขอแนะนำให้คุณอ่านข้อมูลพื้นฐานทั้งหมดก่อน ในบทความนี้ เราถือว่าคุณมีความรู้พื้นฐานและรู้รายละเอียดทั้งหมดแล้ว
วิธีแก้ไข "การเปลี่ยนแปลงในเครื่องของคุณกับไฟล์ต่อไปนี้จะถูกเขียนทับโดยการผสาน"
การแก้ไขข้อความแสดงข้อผิดพลาดนี้ขึ้นอยู่กับสิ่งที่คุณต้องการทำ คุณสามารถละทิ้งการเปลี่ยนแปลงในเครื่องของคุณและดึงการเปลี่ยนแปลงในที่เก็บ หรือคุณสามารถบันทึกการเปลี่ยนแปลงในเครื่องของคุณลงในที่ซ่อน และดึงเวอร์ชันจากที่เก็บ ทุกอย่างขึ้นอยู่กับความชอบของคุณ
ดังนั้น เราขอแนะนำให้คุณปรึกษากับสมาชิกในทีมของคุณ และตรวจสอบให้แน่ใจว่าคุณทั้งหมดอยู่ใน หน้าเดียวกัน ก่อนที่จะก้าวไปข้างหน้า หากคุณกระทำผิดหรือผลักดันผิดรุ่น อาจส่งผลกระทบต่อทั้งทีม
วิธีที่ 1:บังคับให้ดึงเพื่อเขียนทับการเปลี่ยนแปลงในเครื่อง
หากคุณ ไม่สนใจเกี่ยวกับการเปลี่ยนแปลงที่ทำในเครื่อง และต้องการรับรหัสจากที่เก็บ คุณสามารถบังคับดึง การดำเนินการนี้จะเขียนทับการเปลี่ยนแปลงในเครื่องทั้งหมดที่ทำบนคอมพิวเตอร์ของคุณ สำเนาเวอร์ชันที่ซ้ำกันในที่เก็บจะปรากฏขึ้น
ดำเนินการคำสั่งต่อไปนี้ใน IDE ของคุณ:
git reset -- hard git pull
การดำเนินการนี้จะทำลายการเปลี่ยนแปลงในเครื่องทั้งหมดของคุณทันที ดังนั้นตรวจสอบให้แน่ใจว่าคุณรู้ว่ากำลังทำอะไรอยู่และไม่ต้องการการเปลี่ยนแปลงในเครื่อง
วิธีที่ 2:รักษาทั้งการเปลี่ยนแปลง (ในเครื่องและจากการซื้อคืน)
หากคุณต้องการเก็บการเปลี่ยนแปลงทั้งสองไว้ (การเปลี่ยนแปลงที่ทำในเครื่องและการเปลี่ยนแปลงมีอยู่ในที่เก็บ) คุณสามารถเพิ่มและยอมรับการเปลี่ยนแปลงของคุณได้ เมื่อคุณดึงจะเห็นได้ชัดว่ามีความขัดแย้งในการผสาน ที่นี่ คุณสามารถใช้เครื่องมือใน IDE ของคุณ (เช่น Difftool และ mergetool) เพื่อเปรียบเทียบโค้ดสองส่วนและกำหนดการเปลี่ยนแปลงที่จะเก็บไว้และรายการใดที่จะลบ นี่คือทางสายกลาง การเปลี่ยนแปลงจะไม่สูญหายไปจนกว่าคุณจะลบออกด้วยตนเอง
git add $the_file_under_error git commit git pull
เมื่อคุณได้รับข้อขัดแย้งในการผสาน ให้เปิดเครื่องมือแก้ไขข้อขัดแย้งเหล่านั้น และตรวจสอบทีละบรรทัด
วิธีที่ 3:รักษาการเปลี่ยนแปลงทั้งสองแต่ไม่ดำเนินการ
สถานการณ์นี้เกิดขึ้นเป็นครั้งคราวโดยที่นักพัฒนาไม่พร้อมที่จะคอมมิต เนื่องจากมีโค้ดที่ใช้งานไม่ได้บางส่วนซึ่งคุณกำลังแก้ไขจุดบกพร่อง ที่นี่เราสามารถซ่อนการเปลี่ยนแปลงได้อย่างปลอดภัย ดึงเวอร์ชันจากที่เก็บ จากนั้นคลายโค้ดของคุณ
git stash save --keep-index
หรือ
git stash
git pull git stash pop
หากมีข้อขัดแย้งบางอย่างหลังจากที่คุณเปิดที่ซ่อน คุณควรแก้ไขด้วยวิธีปกติ คุณยังสามารถใช้คำสั่ง:
git stash apply
แทนป๊อปถ้าคุณไม่พร้อมที่จะสูญเสียรหัสที่ซ่อนเนื่องจากข้อขัดแย้ง
หากการผสานดูเหมือนไม่เหมาะกับคุณ ให้พิจารณาทำการรีเบส การรีเบสเป็นกระบวนการของการย้ายหรือรวมลำดับของคอมมิตกับคอมมิตเบสใหม่ กรณี Rebase ให้เปลี่ยนรหัสเป็น:
git stash git pull --rebase origin master git stash pop
วิธีที่ 4:ทำการเปลี่ยนแปลงในส่วน "เฉพาะ" ของโค้ดของคุณ
หากคุณต้องการเปลี่ยนแปลงบางส่วนของโค้ดและไม่ต้องการแทนที่ทุกอย่าง คุณสามารถ ยอมรับ ทุกอย่างที่คุณไม่ต้องการเขียนทับแล้วทำตามวิธีที่ 3 คุณสามารถใช้คำสั่งต่อไปนี้สำหรับการเปลี่ยนแปลงที่คุณต้องการเขียนทับจากเวอร์ชันที่มีอยู่ในที่เก็บ:
git checkout path/to/file/to/revert
หรือ
git checkout HEAD^ path/to/file/to/revert
นอกจากนี้ คุณต้องแน่ใจว่าไฟล์ไม่ได้ถูกจัดฉากผ่าน:
git reset HEAD path/to/file/to/revert
จากนั้นดำเนินการคำสั่ง pull:
git pull
จากนั้นจะพยายามดึงเวอร์ชันจากที่เก็บ