มันหมายความว่าอย่างไรเมื่อคอมไพล์บอกว่าไฟล์“ ต้องการอัปเดต”?


156

ฉันไม่สามารถหาคำอธิบายที่เหมาะสมสำหรับข้อความ "[ไฟล์]: ต้องการการอัปเดต" ที่บางครั้ง git คายออกมาเป็นครั้งคราว แม้แต่คำถามที่พบบ่อยเกี่ยวกับคอมไพล์อย่างเป็นทางการก็ยังอธิบายสิ่งนี้ว่าเป็นสิ่งที่ต้องทำ ถ้ามีใครสามารถอธิบายก) มันหมายความว่าอะไร; และ B) วิธีแก้ไขฉันจะขอบคุณอย่างยิ่ง


1
เป็นคำถามที่ดีอย่างที่คุณพูดแม้แต่ GitFaq ยังไม่มีคำตอบ: git.wiki.kernel.org/index.php/ …
Justin Ethier

1
คุณสามารถดูstackoverflow.com/questions/5367734/…

1
คุณสามารถบอกได้อย่างแม่นยำว่าคำสั่งใดสร้างสิ่งนี้ แล้ว Git รุ่นไหน? ฉันพยายามลบออกจาก UI ดังนั้น Git เมื่อเร็ว ๆ นี้ไม่ควรบอกคุณยกเว้นในสถานที่ที่ฉันลืม ;-)
Matthieu Moy

คำตอบ:


108

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


4
ไม่ใช่การดึง - เป็นการรวมที่เป็นส่วนหนึ่งของการดึง คุณจะเห็นข้อผิดพลาดเดียวกันถ้าคุณพยายามที่จะรวมสาขาท้องถิ่นที่มีปัญหาเดียวกันและฉันคิดว่าการดำเนินการผสานอื่น ๆ (ใช้ stash Apply ... ) พิมพ์ข้อผิดพลาดที่คล้ายกันหากไม่เหมือนกัน
Cascabel

อ่าขอบคุณ นั่นทำให้รู้สึกจริง ฉันเดาว่าฉันต้องทำให้แน่ใจว่าฉันยอมรับการเปลี่ยนแปลงก่อนที่จะชำระเงินจากสาขาอื่น
rofrankel

7
ในกรณีที่ช่วยผลการค้นหาฉันก็พบปัญหานี้ในการพยายามทำgit svn rebaseสำเนาที่สกปรก สะสมบันทึก, รีบูต, ป๊อปสะสมและทั้งหมดนั้นถูกต้องกับโลก
Adam Tuttle

1
ไฟล์นั้นอาจไม่สามารถเปลี่ยนแปลงได้ - แม้การเปลี่ยนคุณสมบัติของไฟล์ (เช่นการอนุญาต) อาจทำให้เกิดปัญหานี้ได้
chiborg

22

ในขณะที่คนอื่น ๆ ชี้ให้เห็นความต้องการอัพเดทข้อความหมายความว่าไฟล์สกปรกหรือในคำอื่น ๆ ที่ล้าสมัย แต่แทนที่จะทำการรีเซ็ตและเริ่มต้นใหม่อีกครั้งสิ่งที่สามารถทำได้คือเพียงgit statusแล้วgit add <file> ถ้ามันอยู่ในรายการที่เปลี่ยนแปลง เพราะคุณสามารถเพิ่มไฟล์ก่อนหน้านี้ แต่เปลี่ยนแล้ว สิ่งนี้เกิดขึ้นกับฉันและด้วยความเรียบง่ายนี้addฉันได้แก้ไขปัญหาแล้ว


7

ล็อกอินเข้าสู่เซิร์ฟเวอร์ผลิต / ปลายทางของคุณcdไปยังไดเรกทอรีที่มีแอปพลิเคชันของคุณและดำเนินการคำสั่งทั้งสอง

1. รีเซ็ตเป็นเวอร์ชั่นล่าสุด

คำเตือนนี่จะลบการเปลี่ยนแปลงทั้งหมดของคุณ:

git reset --hard HEAD

2. ดึงการเปลี่ยนแปลง

git pull origin master


1
[รีเซ็ต git - ฮาร์ดหัว] ทำงานให้ฉัน ฉันยอมรับจากไดรฟ์ Windows แชร์ แต่ไดเรกทอรี Ubuntu ของฉันจะไม่สะท้อนถึงความมุ่งมั่นที่ฉันเพิ่งทำแม้ว่าจะเป็นโฟลเดอร์เดียวกัน (Z: แมปกับ / var / www / html /) หลังจากเรียกใช้งานแล้ว [สถานะ git] และ [git pull] ทั้งคู่จะแสดงว่าเป็นรุ่นล่าสุดแล้ว
Keith DC

นี่เป็นวิธีแก้ปัญหาที่เหมาะกับฉันเช่นกัน ฉันพยายามใช้ git subtree โดยใช้ SourceTree บน Windows และมันเกิดปัญหามากขึ้นในกระบวนการ
Artem Russakovskii

3

เช่นเดียวกับคำตอบของคำถามอื่นที่เชื่อมโยงกล่าวว่าข้อความนั้นหมายความว่าคุณมีการเปลี่ยนแปลงที่โดดเด่น นอกจากนี้คุณยังได้รับเช่นถ้าคุณแสดงการเปลี่ยนแปลงบางอย่างด้วยgit addแล้วเปลี่ยนใจและทำgit reset HEAD fileด้วยความตั้งใจที่จะเริ่ม


2
git reset HEAD fileทำให้ข้อความเดียวกันปรากฏขึ้น
ผู้เชี่ยวชาญ

2

ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อกระบวนการรีบูตทำการเปลี่ยนแปลงเพิ่มเติมกับไฟล์ที่ไม่ได้อยู่ในสาขาเป้าหมาย

สำหรับฉันส่วนที่ยากคืออยู่กับ.gitattributesไฟล์ใน repo ของฉัน มีการเพิ่มประเภทไบนารีไฟล์ใหม่ในสาขาอื่น แต่การจัดการถูกบังคับให้เป็นไฟล์ข้อความ เมื่อไฟล์ถูกดาวน์โหลดจาก repo โดย git EOLs (จริง ๆ แล้วเป็นค่าไบท์ไบต์) จะถูกแทนที่ - ส่งผลให้เกิดความแตกต่างแบบไบนารี

การเพิ่มรายการใหม่เพื่อจัดการประเภทไฟล์ใหม่เป็นไบนารี่และลองใหม่ทั้งกระบวนการแก้ไขปัญหาให้ฉันแล้ว


1

ในกรณีของฉันฉันยังคงได้รับ

assets/ElipseThree.png: needs update
You must edit all merge conflicts and then
mark them as resolved using git add

ฉันมีไฟล์เหล่านั้นในไดเรกทอรีของฉัน แต่พวกเขาถูกเปลี่ยนชื่อในสาขาปัจจุบันของฉัน ดังนั้นเพื่อแก้ไขฉันวิ่ง

$ git mv assets/ElipseThree.png assets/elipseThree.png
$ git add assets/elipseHalfFull.png 
$ git rebase --continue

และมันทำให้ฉันไปต่อ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.