ข้อความแสดงข้อผิดพลาด“ การเปลี่ยนแปลงในเครื่องของคุณในไฟล์ต่อไปนี้จะถูกเขียนทับโดยการผสาน ” เกิดขึ้นในกลไกการควบคุมเวอร์ชัน Git ข้อผิดพลาดนี้เกิดขึ้นหากคุณแก้ไขไฟล์ซึ่งมีการปรับเปลี่ยนในที่เก็บระยะไกลด้วย
ข้อผิดพลาด Git: การเปลี่ยนแปลงในเครื่องของคุณในไฟล์ต่อไปนี้จะถูกเขียนทับโดยการผสาน
ข้อความแสดงข้อผิดพลาดนี้หลีกเลี่ยงได้หากไม่มีไฟล์ที่ไม่ถูกคอมมิตที่มีการแก้ไขในที่เก็บระยะไกลด้วย เมื่อพบข้อความนี้ขอแนะนำให้ปรึกษาสมาชิกในทีมคนอื่น ๆ และขอความคิดเห็นจากพวกเขา ไม่ว่าคุณจะต้องการรวมการเปลี่ยนแปลงในเครื่องของคุณหรือเก็บเวอร์ชันไว้ในที่เก็บข้อมูลที่ดีที่สุดคือให้ทุกคนอยู่บนเรือ
ที่เก็บคืออะไร? Push and Pull ใน Git คืออะไร?
ที่เก็บเป็นหน่วยเก็บข้อมูลประเภทหนึ่งสำหรับรหัสซึ่งสมาชิกในทีมได้รับการแก้ไขและได้รับผ่านกลไกการควบคุมเวอร์ชัน GitHub ก ‘ ดึง' หมายความว่าคุณกำลังดึงเวอร์ชันล่าสุดของที่เก็บไปยังที่เก็บข้อมูลในเครื่องของคุณ / IDE (Integrated Development Environment) เช่น Pycharm เป็นต้น
หลังจากดึงคุณทำการเปลี่ยนแปลงรหัสหรือเพิ่มคุณสมบัติอื่น ๆ เมื่อคุณทำเสร็จแล้วคุณจะ ‘ Push ’ รหัสลงในที่เก็บเพื่อบันทึกการเปลี่ยนแปลงและทำการเพิ่มเติม ผู้อื่นสามารถเข้าถึงรหัสได้เช่นกัน
หากคุณยังใหม่กับการควบคุมเวอร์ชัน Github ขอแนะนำให้คุณอ่านข้อมูลพื้นฐานทั้งหมดก่อน ในบทความนี้เราถือว่าคุณมีความรู้พื้นฐานและรู้รายละเอียดทั้งหมดแล้ว
วิธีแก้ไข 'การเปลี่ยนแปลงในเครื่องของคุณในไฟล์ต่อไปนี้จะถูกเขียนทับโดยการผสาน'
ความละเอียดของข้อความแสดงข้อผิดพลาดนี้ขึ้นอยู่กับสิ่งที่คุณต้องการทำ คุณสามารถละทิ้งการเปลี่ยนแปลงภายในเครื่องของคุณและดึงการเปลี่ยนแปลงในที่เก็บหรือคุณสามารถบันทึกการเปลี่ยนแปลงในเครื่องของคุณลงในที่เก็บและดึงเวอร์ชันจากที่เก็บ ทุกอย่างขึ้นอยู่กับความชอบของคุณ
ดังนั้นเราขอแนะนำให้คุณปรึกษากับสมาชิกในทีมของคุณและตรวจสอบให้แน่ใจว่าคุณทั้งหมดอยู่ใน หน้าเดียวกัน ก่อนที่จะก้าวไปข้างหน้า หากคุณทำผิดหรือผลักดันเวอร์ชันผิดอาจส่งผลกระทบต่อทั้งทีม
วิธีที่ 1: บังคับให้ดึงเพื่อเขียนทับการเปลี่ยนแปลงในเครื่อง
ถ้าคุณ อย่าสนใจการเปลี่ยนแปลงที่ทำในเครื่อง และต้องการรับรหัสจากที่เก็บคุณสามารถบังคับดึง สิ่งนี้จะเขียนทับการเปลี่ยนแปลงในเครื่องทั้งหมดที่ทำบนคอมพิวเตอร์ของคุณสำเนาที่ซ้ำกันของเวอร์ชันในที่เก็บจะปรากฏขึ้น
ดำเนินการคำสั่งต่อไปนี้ใน IDE ของคุณ:
รีเซ็ตคอมไพล์ - ดึงคอมไพล์ยาก
สิ่งนี้จะทำลายการเปลี่ยนแปลงในพื้นที่ทั้งหมดของคุณในทันทีดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณรู้ว่าคุณกำลังทำอะไรอยู่และไม่ต้องการการเปลี่ยนแปลงในท้องถิ่น
วิธีที่ 2: รักษาการเปลี่ยนแปลงทั้งสองอย่าง (ในเครื่องและจาก repo)
หากคุณต้องการเก็บการเปลี่ยนแปลงทั้งสอง (การเปลี่ยนแปลงที่ทำในเครื่องและการเปลี่ยนแปลงที่มีอยู่ในที่เก็บ) คุณสามารถเพิ่มและยืนยันการเปลี่ยนแปลงของคุณได้ เมื่อคุณดึงจะเห็นได้ชัดว่ามีความขัดแย้งในการผสาน ที่นี่คุณสามารถใช้เครื่องมือใน IDE ของคุณ (เช่น Difftool และ mergetool) เพื่อเปรียบเทียบโค้ดทั้งสองชิ้นและกำหนดว่าจะเก็บการเปลี่ยนแปลงใดไว้และส่วนใดที่จะลบออก นี่คือทางสายกลาง การเปลี่ยนแปลงจะไม่สูญหายจนกว่าคุณจะลบออกด้วยตนเอง
git เพิ่ม $ the_file_under_error git คอมมิตดึง git
เมื่อคุณได้รับความขัดแย้งในการผสานให้เปิดเครื่องมือแก้ไขความขัดแย้งเหล่านั้นและตรวจสอบทีละบรรทัด
วิธีที่ 3: รักษาการเปลี่ยนแปลงทั้งสองอย่าง แต่ไม่ได้กระทำ
สถานการณ์นี้เกิดขึ้นเป็นครั้งคราวโดยที่นักพัฒนาไม่พร้อมที่จะยอมรับเนื่องจากมีโค้ดที่เสียหายบางส่วนซึ่งคุณกำลังแก้ไขข้อบกพร่อง ที่นี่เราสามารถซ่อนการเปลี่ยนแปลงได้อย่างปลอดภัยดึงเวอร์ชันจากที่เก็บจากนั้นยกเลิกการซ่อนโค้ดของคุณ
git stash บันทึก - เก็บดัชนี
หรือ
git stash
git ดึง git stash pop
หากมีข้อขัดแย้งบางอย่างหลังจากที่คุณเปิดที่ซ่อนคุณควรแก้ไขด้วยวิธีปกติ คุณยังสามารถใช้คำสั่ง:
ใช้ git stash
แทนป๊อปหากคุณไม่พร้อมที่จะสูญเสียรหัสที่ซ่อนเนื่องจากความขัดแย้ง
หากการผสานดูเหมือนจะไม่เป็นตัวเลือกที่เหมาะสมสำหรับคุณให้ลองสร้างฐานใหม่ Rebasing คือกระบวนการในการย้ายหรือรวมลำดับการคอมมิตเข้ากับการคอมมิตฐานใหม่ ในกรณีของการเปลี่ยนรหัสใหม่ให้เปลี่ยนรหัสเป็น:
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 รีเซ็ตเส้นทาง HEAD / to / file / to / revert
จากนั้นดำเนินการตามคำสั่งดึง:
git ดึง
จากนั้นจะพยายามดึงเวอร์ชันจากที่เก็บ
อ่าน 3 นาที