มีสิ่งผิดปกติเกิดขึ้นกับไฟล์ใดไฟล์หนึ่งในที่เก็บ git ในพื้นที่ของฉัน เมื่อฉันพยายามที่จะเปลี่ยนสาขามันบอกว่า:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
นั่นแปลว่าอะไร?
มีสิ่งผิดปกติเกิดขึ้นกับไฟล์ใดไฟล์หนึ่งในที่เก็บ git ในพื้นที่ของฉัน เมื่อฉันพยายามที่จะเปลี่ยนสาขามันบอกว่า:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
นั่นแปลว่าอะไร?
คำตอบ:
นี่อาจหมายความว่าโปรแกรมอื่นกำลังใช้ไฟล์ซึ่งกำลังป้องกันไม่ให้คอมไพล์ "ย้าย" ไฟล์เข้าหรือออกจากไดเรกทอรีทำงานเมื่อคุณพยายามเปลี่ยนสาขา
ฉันมีสิ่งนี้เกิดขึ้นใน Windows Vista โดยที่ eclipse เป็นโปรแกรม "ใช้" ไฟล์ ไฟล์อาจไม่เปิดจริง ๆ ใน eclipse แต่อาจถูกเปิดโดยกระบวนการที่ดำเนินการโดย eclipse
ในเหตุการณ์นี้ให้ลองปิดไฟล์ในแอปพลิเคชันใด ๆ ที่อาจใช้งาน หากวิธีนี้ไม่ได้ผลให้ออกจากแอปพลิเคชั่นใด ๆ ที่อาจเปิดไฟล์โดยสมบูรณ์
GitKraken
คุณอาจได้รับสิ่งนี้หากคุณทำคำสั่งเช่น rebase
ฉันมีปัญหานี้และแก้ไขได้โดยคำสั่ง: คำสั่งgit gc
ดังกล่าวลบ temp และไฟล์ที่ไม่จำเป็น (ตัวเก็บขยะ)
git pull
เริ่มต้นgit gc
โดยอัตโนมัติและ gc พยายามเข้าถึงไฟล์. pack และ. inx บางไฟล์ สิ่งเหล่านี้ถูกระงับโดยกระบวนการ "windows git" ซึ่งเป็นgit pull
คำสั่งที่เป็นเจ้าของ ทำงานgit gc
ด้วยตนเองและ - git pull
แก้ไขปัญหาได้จริง
git gc
ฉันได้รับข้อผิดพลาดเดียวกันอีกครั้งเมื่อgc
อยู่ในระหว่างดำเนินการ
วิธีแก้ปัญหาจากที่นี่ได้ผลกับฉัน:
นี่เป็นคำตอบเฉพาะของ Windows ดังนั้นฉันจึงทราบว่าไม่เกี่ยวข้องกับคุณ ... ฉันแค่รวมไว้เพื่อประโยชน์ของผู้ค้นหาในอนาคต
ในกรณีของฉันเป็นเพราะฉันใช้ Git จากบรรทัดคำสั่งที่ไม่ผ่านการตรวจสอบ "Run as Administrator" แก้ไขให้ฉัน
Ctrl+C
เพื่อยุติรายการไฟล์ที่ไม่สามารถลิงก์ได้ที่มีความยาวมาก ออกจาก gitbash, IDE ของฉันและแอปพลิเคชัน GitHub Windows รีสตาร์ท gitbash ในโหมด "Run as Administrator" ที่ยกระดับ git gc --aggressive
และวิ่ง ใช้เวลาสักครู่ในการทำให้เสร็จ แต่ทำได้โดยไม่มีข้อผิดพลาด
ฉันพบปัญหานี้ในขณะที่ทำ git pull
ผมพบปัญหานี้ขณะที่ทำ
ฉันพยายามgit gc
แล้วก็แก้ปัญหาได้
ในกรณีของฉันไม่มีกระบวนการที่สัมผัสไฟล์หรือไดเรกทอรี อาจเกิดขึ้นหากเส้นทางยาวมากเนื่องจากข้อ จำกัด ของระบบปฏิบัติการ (windows) ลองเปิดใช้งานการสนับสนุน longpath ในการกำหนดค่า git ทั่วโลกตามที่ระบุด้านล่าง:
git config --global core.longpaths true
หรือพยายามตั้งค่าสถานะคำตอบใช่ / ไม่ใช่หากไม่ขัดแย้งกับคุณ
set GIT_ASK_YESNO=false
หากเส้นทางยาวเกินไปฉันไม่พบวิธีแก้ปัญหาที่ประสบความสำเร็จ
GIT_ASK_YESNO
ไม่พบข้อมูลเกี่ยวกับอันนี้ มันมาจากไหน ?
core.longpaths
ด้วยเพิ่มเติม: รีเซ็ต - ฮาร์ดพรุน gc ใช้งานได้สำหรับฉัน - แต่ต้องปิด AndroidStudio เพื่อไม่ให้ยุ่งเหยิงกับเครื่องมือในการสร้าง
ฉันพยายามgit gc
แล้วก็แก้ปัญหาได้
สิ่งนี้อาจมีประโยชน์สำหรับใครบางคน หากทั้งหมดข้างต้นไม่ได้ผลสำหรับคุณให้ทำตามขั้นตอนเหล่านี้:
ปิด IDE ของคุณ (ของฉันคือ Eclipse ไม่แน่ใจว่ามันใช้กับ Intellij และอื่น ๆ ) หรือแอปอื่น ๆ ที่อาจใช้ git
เปิดคอมไพล์จากบรรทัดคำสั่ง (ในกรณีของฉันฉันมีคอมไพล์ทุบตี) และทำงานgit gc
ตามที่ผู้อื่นกล่าวถึง
นี่เป็นเวทย์มนตร์สำหรับฉัน
ในขณะที่ฉันกำลังใช้gitkrakenและพรอมต์คำสั่งฉันพบปัญหาเดียวกัน จากนั้นฉันเรียกใช้ git gc
คำสั่งเพื่อแก้ไขปัญหาของฉัน ดังนั้นฉันมีความสุขและต้องการแบ่งปันบางจุดซึ่งอาจเป็นประโยชน์
สิ่งที่git gc
จะทำอย่างไร
git gc
การลบวัตถุที่ไม่สามารถเข้าถึงได้ซึ่งอาจถูกสร้างขึ้นจากการร้องขอของ git add ก่อนหน้า
เมื่อใดที่จะเรียกใช้ git gc
?
จากเอกสารผู้ใช้ควรรันภารกิจนี้เป็นประจำภายในที่เก็บแต่ละแห่งเพื่อรักษาการใช้พื้นที่ดิสก์ที่ดีและประสิทธิภาพการทำงานที่ดี
จะกำหนดค่าอัตโนมัติได้อย่างไร
คำสั่ง git บางคำสั่งอาจรัน git gc โดยอัตโนมัติ ดูที่ --auto flag ด้านล่างสำหรับรายละเอียด หากคุณรู้ว่าคุณกำลังทำอะไรอยู่และสิ่งที่คุณต้องการคือปิดการใช้งานพฤติกรรมนี้อย่างถาวรโดยไม่ต้องพิจารณาอะไรเพิ่มเติม
git config --global gc.auto 0
ในกรณีของฉัน (Win8.1, TortoiseGit ทำงาน) มันเป็นกระบวนการที่เรียกว่า "TortoiseSVN status cache" ที่ล็อคไฟล์
การฆ่ามันทำให้ฉันเรียกใช้ "git gc" ได้โดยไม่มีปัญหาอีกต่อไป กระบวนการข้างต้นเกิดขึ้นจาก TortoiseGit ดังนั้นจึงไม่จำเป็นต้องรีสตาร์ทด้วยตนเอง
ฉันมีปัญหาแบบนี้ใน Windows 7 และมันกลับกลายเป็นว่าเกิดจากgit.exe
กระบวนการที่ถูกกำพร้าบางอย่าง
หากต้องการแก้ปัญหาให้เปิดตัวจัดการงานและฆ่าgit.exe
กระบวนการทั้งหมด
เนื่องจากgit
คำสั่งมีอายุสั้นคุณจึงไม่ควรเห็นรายการใด ๆgit.exe
ในตัวจัดการงาน เมื่อพวกเขาอยู่ที่นั่นมักจะหมายถึงบางสิ่งผิดปกติและคุณควรฆ่ากระบวนการเหล่านั้น
ฉันพบปัญหานี้ใน Windows ฉันปิด IDE (Android Studio) และเลือก YES ใน git shell มันได้ผล
ใน Windows 8: ฉันวิ่ง git gc และมันบอกว่า git gc กำลังทำงานอยู่ฉันวิ่ง git gc --force และตัวรวบรวมขยะก็วิ่ง
ฉันสามารถสลับสาขาและรวมได้โดยไม่มีปัญหาลอง git gc --force
บางทีกระบวนการ gc ไม่ได้หยุดอย่างสง่างามด้วยเหตุผลใดเหตุผลหนึ่ง
ฉันมีปัญหานี้กับ.tmp
ไฟล์ใน/.git/objects/pack
โฟลเดอร์ ฉันคิดว่ามีบางอย่างล้มเหลวระหว่างการกดหรือดึงดังนั้นฉันจึงลบไฟล์ชั่วคราวเหล่านี้และรีเซ็ต HEAD เป็นความมุ่งมั่นครั้งล่าสุดของฉัน ไม่แน่ใจว่าสิ่งนี้จะได้รับคำแนะนำ แต่มันใช้ได้กับฉัน ยังgit count-objects -v
ให้ฉันรายการ.tmp
ไฟล์ที่ไม่ได้อยู่ในโฟลเดอร์ pack ด้วย
หรือเพื่อระงับข้อความ y / n ใน windows git open cmd.exe
และรัน:
SETX GIT_ASK_YESNO false
เห็นที่นี่: https://twitter.com/petercamfield/status/494805475733807104
git gc
แล้วgit count-objects -v
ช่วยในการระบุวัตถุชั่วคราวที่เหลือในpack
โฟลเดอร์
ฉันสามารถแก้ไขปัญหานี้ได้ด้วยการเปิด Powershell ในฐานะผู้ดูแลระบบและจากที่นั่น
git checkout <branch_name>
ฉันประสบปัญหาเดียวกันในขณะที่ทำ 'git pull' ฉันลองใช้คำสั่ง git gc 'การดูแลทำความสะอาดด้วยตนเองและแก้ไขปัญหาของฉันได้
หลังจากลองใช้วิธีแก้ปัญหาต่าง ๆ ในที่สุดก็git clean -f
ช่วยฉัน
แก้ไข: ฉันพบปัญหาอีกครั้งสองสามครั้ง - การปิดกระบวนการทั้งหมดขึ้นอยู่กับ git ดูเหมือนจะช่วยได้ (เช่น gitbash, Eclipse IDE ฯลฯ )
ตามที่ระบุไว้ข้างต้นมีสิ่งอื่นที่กำลังถือไฟล์อยู่ สิ่งที่เป็นโปรแกรมที่ไม่ได้ดูน่าสงสัยสำหรับเรา ฉันพยายามดึง git จากคอนโซลขณะที่เปิด GitKraken การปิด GitKraken แก้ไขปัญหาแล้ว
หลังจากรันคำสั่ง
git rm -rf foo.bar
ฉันเห็นข้อผิดพลาด
Unlink of file 'foo.bar' failed. Should I try again? (y/n)
เพราะโปรแกรมอื่นกำลังใช้ไฟล์นี้อยู่ ตัวอย่างเช่นเมื่อฉันรัน Java เว็บแอปพลิเคชันในรูปแบบการดีบักหรือรันเว็บแอปพลิเคชันบนเซิร์ฟเวอร์ฉันไม่สามารถลบไฟล์บันทึกได้ ปิดแอปพลิเคชันตัด (หรือปิดกระบวนการดีบัก) ลองอีกครั้ง
git rm -rf foo.bar
ฉันเห็นไฟล์ถูกลบไปแล้ว
นี่อาจเป็นหน้าต่าง gitk ที่แยกต่างหากซึ่งทำงานเพื่อดูประวัติ git
เพียงปิดหน้าต่างนั้นเพื่อแก้ไขปัญหานั้น
ฉันพบปัญหานี้โดยใช้ git Bash และ Eclipse EGit ในเวลาเดียวกัน วิธีแก้ปัญหา: ปิด Eclipse ยังไม่เจ็บที่จะทำงานgit gc
ตามที่ @khilo พูดถึง
หลังจากที่ไม่มีคำตอบข้างต้นดูเหมือนจะทำงานได้ทำงานgit fetch -p
ได้สำหรับฉัน
ฉันพบปัญหานี้ใน Windows คุณอาจต้องการรัน git bash ในฐานะผู้ดูแลระบบจากนั้นทำตามคำสั่งปรารถนาซึ่งแก้ไขปัญหาให้ฉัน
หากคุณกำลังพัฒนาเว็บแอปพลิเคชันสาเหตุที่พบบ่อยคือลืมปิดเซิร์ฟเวอร์ ตัวอย่างเช่นนี่อาจเป็นกระบวนการ Node.js แบบง่าย ๆ หรือบนกระบวนการ IIS ของคุณที่ทำงานโดยไม่เป็นการรบกวนเป็นกระบวนการเบื้องหลัง
ฉันลองทุกเคล็ดลับในหน้านี้และไม่มีอะไรช่วย ฉันทำgit fetch
และgit reset --hard origin/development
ให้ข้อผิดพลาด unkink ให้ฉัน ฉันไม่สามารถรีเซ็ตการกระทำล่าสุดได้
สิ่งที่ช่วยได้คือตรวจสอบสาขาอื่นแล้วตรวจสอบสาขาก่อนหน้า แปลกมาก แต่ก็แก้ปัญหาได้
หากการปิด IDE ของคุณและการรันคำสั่ง git ต่าง ๆ ที่แสดงไว้ที่นี่จะไม่ช่วยให้ลองฆ่ากระบวนการ Java ทั้งหมดที่กำลังทำงานอยู่ ฉันมีกระบวนการ Java ที่อาจหลงเหลือจาก eclipse ซึ่งทำให้ไฟล์คอนฟิกูเรชันเปิดอยู่
หากคุณใช้ Docker และใช้งาน Windows 10 คุณอาจต้องการหยุดคอนเทนเนอร์ที่ไฟล์นั้นอาจทำงานอยู่ เพื่อแสดงสถานะของตู้สินค้าของคุณให้เรียกใช้
docker ps -a
หากต้องการหยุดพวกเขาเพียงแค่เรียกใช้
docker stop <container name or container id>
สิ่งนี้ใช้ได้กับฉันเมื่อฉันเรียกใช้ไฟล์ในเครื่องโดยใช้ไฟล์. sh
ทำงานให้ฉันพยายามบน windows:
หยุดเซิร์ฟเวอร์ของคุณทำงานจาก IDE หรือปิด IDE ของคุณ
Intellij / Ecllipse หรืออะไรก็ตามมันจะทำงาน
บน Windows เห็นข้อผิดพลาดนี้ในหนึ่งgit clone
ใน repo (ค่อนข้างใหญ่) ปิดSmartGitแล้วหยุดซอฟต์แวร์สำรองข้อมูลของฉัน (CrashPlan) และหยุดทำงานชั่วคราว ไม่แน่ใจว่าผู้ใดใน 2 ที่หลอกลวง แต่ถ้าใช้ทั้งสองอย่างนี้อาจทำเพื่อคุณเช่นกัน
ฉันมีปัญหาเดียวกันในขณะที่ทำ git pull และตามที่ระบุไว้ข้างต้นเป็นเพราะโปรแกรมที่กำลังเก็บไฟล์เหล่านั้นและไม่อนุญาตให้ใช้ git pull การปิดโปรแกรมช่วย โดยปกติแล้ว IDE (เช่น Eclipse) จากที่ที่ไฟล์กำลังถูกเช็คอินจะถูกเก็บไว้ในพื้นหลัง การปิดตัวดึงข้อมูล git ที่เหมือนกันและเปิดขึ้นมาใหม่แก้ปัญหาให้ฉันได้
ฉันมีข้อผิดพลาดเดียวกันนี้และปิดแอปที่ไฟล์เปิดทำการแก้ไข ฉันสามารถย้อนกลับไปและกด "Y"