Computer >> คอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

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

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

วิธีแก้ไขข้อผิดพลาด 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

จากนั้นจะพยายามดึงเวอร์ชันจากที่เก็บ