รับข้อผิดพลาดร้ายแรงในคอมไพล์สำหรับรายการหลายขั้นตอน


241

การใช้ Git เวอร์ชั่น 2.2.0 กับเอ็นจิ้นเกม unity บน OS X และต้องการที่จะส่งรหัส ฉันเพิ่มทุกอย่างและไม่ได้รับข้อความแสดงข้อผิดพลาด จากนั้นคอมมิต -m และได้รับข้อความแสดงข้อผิดพลาดนี้:

fatal: multiple stage entries for merged file 'Assets/Prefabs/Resources'

ฉันไม่ได้สังเกตเห็นว่าฉันผลักมันไม่ได้ให้ข้อความแสดงข้อผิดพลาดจริง ๆ แล้วพูดEverything up-to-date ดังนั้นฉันจึงตรวจสอบบิตบูท ดังนั้นฉันจึงตรวจสอบบันทึกในเครื่องของฉันและนั่นก็ไม่ได้แสดงการกระทำของฉัน

ฉันดู google เพื่อหาคำตอบ ... และไม่มีอะไร ข้อผิดพลาดนี้คืออะไร? และฉันจะแก้ไขได้อย่างไร


คุณใช้ git หรือเครื่องมือรุ่นใด มีเธรดล่าสุดในรายการผู้พัฒนาเกี่ยวกับการปรับปรุงการตรวจสอบสำหรับหลาย ๆ สเตจ news.gmane.org/gmane.comp.version-control.git
Philip Oakley

ดูเหมือนจะเป็นไปได้ว่าการตรวจสอบพิเศษใน 2.2.0 อาจมีส่วนเกี่ยวข้อง "ตรวจสอบให้แน่ใจว่ารายการที่ยังไม่ได้ลบถูกลบ" 12 ส.ค. โดย Jaime Soriano Pastor อาจเป็นหนึ่งเธรดที่จะเริ่มต้นด้วย
Philip Oakley

4
แล้วทำไมสิ่งนี้ถึงเกิดขึ้น
Charlie Parker

เพียงแก้ไขหุ่นจำลองไปยังไฟล์ดังกล่าวและ 'ส่งและซิงค์'
sajanyamaha

หมายเหตุ: ดูstackoverflow.com/a/51919644/6309
VonC

คำตอบ:


381

วิธีแก้ปัญหาแรกซึ่งดูเหมือนว่าจะทำงานร่วมกับรุ่นล่าสุดของ Git (2.3 +, + Q2 2015) ถูกกล่าวถึงในทุน 's ขึ้นไปวันที่คำตอบ :

  1. ลบดัชนี

    $ rm .git/index
    
  2. เพิ่มทั้งหมด

    $ git add -A
    
  3. ผูกมัด

    $ git commit -a
    

คำตอบเดิม (ปลายปี 2014)
วิธีแก้ปัญหาตามปกติคือ:

  • โคลน repo ระยะไกลอีกครั้งเป็น repo ท้องถิ่นใหม่
  • เพิ่มการเปลี่ยนแปลงจาก repo แรกไปที่สอง:

    $ cd /patH/to/second/cloned/repo
    $ git --work-tree=/path/to/first/repo add .
    

คุณสามารถเห็นข้อความแสดงข้อผิดพลาดนี้read-cache.cกล่าวถึงในโปรแกรมแก้ไขนี้ (" read-cache.c: ตรวจสอบให้แน่ใจว่าลบรายการที่ไม่ได้ถูกลบออก ") และแนะนำในGit 2.2 คอมมิท
เนื่องจากเป็นเช่นนี้เมื่อเร็ว ๆ นี้จึงเป็นไปได้ที่การลดระดับ Git เป็น 2.1 จะเพียงพอที่จะไม่ได้รับผลกระทบจากโปรแกรมแก้ไขนั้น

OP แดเนียล Toebeเพิ่มในความคิดเห็นที่ :

ปัญหาเกิดขึ้นใน macbook ของฉันซึ่งตัดสินใจล้มเหลวในตัวฉันและอุบัติเหตุคอมพิวเตอร์อีกเครื่องทำให้ฉันไม่สามารถทำตามโครงการของฉันได้


@sharpner เป็นไปได้ว่ามันเป็นบั๊กหรือผลข้างเคียงของแพทช์นั้นในเคสของคุณ
VonC

1
ขออภัยสำหรับการตอบกลับที่ล่าช้า ... ปัญหาที่เกิดขึ้นกับ macbook ของฉันซึ่งตัดสินใจล้มเหลวในตัวฉันและคอมพิวเตอร์เครื่องอื่นทำให้เกิดปัญหากับโครงการของฉัน
Daniel Toebe

1
@DanielToebe ข้อเสนอแนะที่ดี ฉันได้รวมไว้ในคำตอบเพื่อให้มองเห็นได้ชัดเจนขึ้น
VonC

ฉันวิ่งเข้าไปในเดียวกันหลังจากพยายามgit commit -c sha
Chris Leishman

2
สำหรับผู้ที่สนใจสิ่งนี้เกิดขึ้นกับฉันเพราะฉันบังเอิญแก้ไขไฟล์ในโฟลเดอร์. git ของฉันแทนที่จะเป็นไฟล์เอง
ostler.c

166

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

ฉันสามารถแก้ไขปัญหานี้ได้โดยการลบไฟล์. git / index ในที่เก็บของฉันคล้ายกับสิ่งที่ @slider แนะนำ (ฉันเชื่อว่าเขาพิมพ์ผิดเส้นทาง)

rm .git/index

จากนั้นฉันต้องเพิ่มและยอมรับการเปลี่ยนแปลงในพื้นที่อีกครั้ง

git add -A
git commit -m "..."

ฉันสามารถผลักดันจากระยะไกลได้

ดัชนี git คืออะไรและเกี่ยวข้องกันอย่างไร

อะไรคือข้อตกลงกับดัชนี Git?

git“ index” เป็นที่ที่คุณวางไฟล์ที่คุณต้องการคอมมิทไปที่ที่เก็บ git

ก่อนที่คุณจะ "คอมมิชชัน" (เช็กอิน) ไฟล์ไปยังที่เก็บ git คุณต้องวางไฟล์ลงใน git“ index” ก่อน

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

แก้ไข: ดูเหมือนว่ามันเกี่ยวข้องกับ Mac (ตามความคิดเห็น) ดังนั้นถ้ามันช่วยฉันใน OSX 10.10 และ git เวอร์ชัน 2.3.4 ติดตั้งผ่านทาง brew


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

4
ยืนยันสิ่งนี้บน Mac OS X Yosemite ที่เกิดขึ้นในขณะที่ทำงานในสตูดิโอของ Android แต่ไม่มีเฉพาะสถานการณ์ทำซ้ำ ..
ดึง

4
นี่ควรเป็นคำตอบที่ถูกต้องเพราะได้ผลและมีคำอธิบายที่ดีกว่า สิ่งนี้เพิ่งเกิดขึ้นกับฉันเช่นกัน
Jared Burrows

1
ทำงานให้ฉันด้วย การเพิ่มรูทการควบคุมเวอร์ชันใน IntelliJ ทำให้มันดีขึ้น แต่ดัชนี git นั้นทำงานได้ดี ขอบคุณสำหรับคำอธิบาย @grant
Andrew Eells

1
ฉันยังมีปัญหานี้เมื่อ IntelliJ ทำงานในพื้นหลังในขณะที่ฉันกำลังแก้ไขด้วย vim gitผมคิดว่าจะมีสภาพการแข่งขันใน (อันที่จริงฉันคิดว่ามีจำนวนมาก) การปิด IntelliJ การลบดัชนีและการยืนยันว่างานของฉันทำงานได้ดี
Robert Fischer

119

สำหรับโครงการ

rm .git/index
git reset

หลังจากลบดัชนีคุณต้องสร้างใหม่โดยการรีเซ็ต git

สำหรับ submodule:

ไปที่โฟลเดอร์โครงการหลัก

rm .git/modules/your_project_structure/index
git reset --hard HEAD

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

1
@JosFaber เพราะดัชนีไม่ได้คอมมิทประวัติ จริงๆแล้วมันเป็นโครงสร้างตัวช่วย "ซ้ำซ้อน" ดูschacon.github.io/gitbook/7_the_git_index.htmlดังนั้นจึงสามารถสร้างการเปรียบเทียบต้นไม้ทำงานและ HEAD ใหม่ได้อย่างสมบูรณ์ และนั่นคือสิ่งที่ Git ทำการรีเซ็ต หน้าคนพูดว่า: ... รีเซ็ตรายการคัดลอกจาก <tree-ish> ไปยังดัชนี ...
farincz

2
ขอบคุณ! หากไม่มีการรีเซ็ต git ฉันต้องการให้เพิ่มไฟล์ทั้งหมดที่มีอยู่ในที่เก็บอีกครั้ง
Robert Bernstein

1
ฉันใช้ sourcetree บน mac ของฉัน ฉันลบ. git / index ด้วยตนเองจากนั้นเลือกการกระทำที่ดีล่าสุดคลิกขวามาสเตอร์รีเซ็ตที่เลือก (ในกรณีของฉัน) ไปที่ความคิดเห็นนี้ - จากนั้นเลือกตัวเลือกแบบผสมซึ่งทำให้งานของฉันอยู่ในสภาพดี จากนั้นฉันก็สามารถทำงานที่ได้ทำไปแล้วและทุกอย่างก็ดีขึ้นแล้ว
user216661

1
วิธีที่สะอาดและเร็วที่สุด!
h4rd4r7c0r3

29

คุณสามารถลบไฟล์ดัชนี Git จากโครงการของคุณ ในรากของโครงการของคุณให้เรียกใช้คำสั่งต่อไปนี้:

rm .git/index

หลังจากนั้นคอมไพล์ก็ใช้งานได้


3
สิ่งนี้ไม่ตอบคำถาม โปรดระบุคำตอบนี้โดยละเอียด
ArtOfCode

ไม่ทำงานสำหรับฉันrm: /.git/index: No such file or directoryMac OSX Yosemite; git 2.3.4 ติดตั้งผ่าน homebrew
อนุญาต

@grant คุณต้องลบเครื่องหมายทับที่จุดเริ่มต้น ( rm .git/indexในไดเรกทอรี git ของคุณ)
ChristophLSA

2
@ChristophLSA ขอบคุณ - ฉันตอบพร้อมคำอธิบายถึงสิ่งที่การกระทำนี้ทำเพื่อให้เกิดความชัดเจน คำตอบนี้สามารถอัปเดตเป็นเพื่อสะท้อนเส้นทางที่เหมาะสมและแจ้งให้ผู้ใช้ทราบว่าการกระทำนั้นทำอะไรได้บ้าง
อนุญาต

1
ฉันรู้ว่าทำไมงานนี้ ปัญหาเกิดจากดัชนีที่เสียหาย ฉันพบปัญหานี้เมื่อดัชนีของฉันเสียหายโดยการแก้ไขโค้ดใน IntelliJ ขณะเขียนข้อความคอมมิทในบรรทัดคำสั่ง การลบดัชนีไม่ทำลายการเปลี่ยนแปลงของคุณ
Pyrolistical

3

ฉันลองใช้วิธีอื่นและมันใช้งานได้สำหรับฉัน ด้านล่างเป็นตัวเลือกของฉัน

#cd .git
#rm index
#cd ..
#git add .

เป็น @farincz กล่าวว่าคุณต้องสร้างดัชนีอีกครั้งโดยการเรียกมิฉะนั้นมันจะช่วยให้คุณgit reset fatal: Could not reset index file to revision 'HEAD'
kuskmen

1

หากสิ่งนี้เกิดขึ้นใน submodule

ไฟล์ดัชนีอยู่ภายใน.gitไดเรกทอรีหลัก:

.git/modules/your_project_structure/index

ใน submodule ไม่มีไดเรกทอรีชื่อ.git(อย่างน้อยในโครงการที่ฉันกำลังทำอยู่) มีเพียง.gitไฟล์ที่บอกคุณ (และ git) ว่าจะหาไดเร็กตอรี่ git ของโครงการนั้นได้ที่ใด

สถานะ Git แสดงการเปลี่ยนแปลงที่ฉันไม่ได้ทำ

หลังจากลบไฟล์ดัชนีและทำสิ่งต่อgit resetไปฉันพบว่าตัวเองกำลังเผชิญกับการเปลี่ยนแปลงที่อธิบายไม่ได้มากมายและการรีเซ็ตฮาร์ดไม่ได้ช่วยอะไร

คำเตือนคุณจะสูญเสียการเปลี่ยนแปลงทั้งหมดดังนั้นโปรดส่งและดำเนินการก่อนดำเนินการต่อ

ดัชนีดูเหมือนเสียหายดังนั้นฉันจึงลบออกโดยใช้คำสั่งต่อไปนี้

git rm -rf --cached .
git reset --hard HEAD

0

ฉันเพิ่งได้รับข้อผิดพลาดนี้กับ Github Desktop Client (OSX) ทั้งหมดที่ฉันทำคือออกจากแอพและเปิดใหม่จากนั้นก็เริ่มทำงาน

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