วิธีแก้ไข Git Error 'การเปลี่ยนแปลงในเครื่องของคุณในไฟล์ต่อไปนี้จะถูกเขียนทับโดยการผสาน'



ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา

ข้อความแสดงข้อผิดพลาด“ การเปลี่ยนแปลงในเครื่องของคุณในไฟล์ต่อไปนี้จะถูกเขียนทับโดยการผสาน ” เกิดขึ้นในกลไกการควบคุมเวอร์ชัน Git ข้อผิดพลาดนี้เกิดขึ้นหากคุณแก้ไขไฟล์ซึ่งมีการปรับเปลี่ยนในที่เก็บระยะไกลด้วย



ข้อผิดพลาด 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 นาที