Git - ร้ายแรง: ไม่สามารถสร้าง '/path/my_project/.git/index.lock': มีไฟล์อยู่


805

ฉันยังได้รับข้อความแสดงข้อผิดพลาดนี้เมื่อฉันพยายามย้ายแผนผังโครงการของฉันไปยัง repo คอมไพล์

ฉันตรวจสอบสิทธิ์ของไดเรกทอรีของฉันกับโปรเจคนี้และตั้งค่าไว้ที่ 777 ในเทอร์มินัลในไดเรกทอรีที่my_projectฉันตั้งค่าไว้:

git init

และถ้าฉันลอง

คอมไพล์เพิ่ม

หรือ

git commit -m "อัพโหลดครั้งแรก"

ดังนั้นฉันจะได้รับข้อผิดพลาด

fatal: Unable to create '/path/my_proj/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

ฉันพยายามสร้าง repo ใหม่และไปส่งที่นั่น แต่น่าเสียดายที่ยังคงมีข้อความแสดงข้อผิดพลาดเดียวกัน

สาเหตุของปัญหาคืออะไร


1
ฉันมีปัญหานี้เพราะฉันลงชื่อเข้าใช้ด้วย su ในเทอร์มินัลอื่นเปลี่ยนกลับไปเป็นครั้งแรกที่ทุกอย่างเป็นไปด้วยดี
maazza


3
พี่ชายฉันมีปัญหาเดียวกันใช้ "เพิ่ม sudo git หรือ git กระทำ -m" อัปโหลดครั้งแรก "" แทน "เพิ่ม git หรือ git กระทำ -m" อัปโหลดครั้งแรก ""
mehdi zahrane

ฉันได้รับการแก้ไขโดยการเปลี่ยนการอนุญาตไฟล์. git ต่อstackoverflow.com/questions/14127255/ …โปรดอ้างถึงคำตอบจาก Mahshid Zeinaly
vikramvi

คำตอบ:


1738

ลอง

rm -f ./.git/index.lock

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


7
มันจะไม่เกิดขึ้นโดยอัตโนมัติ คุณต้องดำเนินการคำสั่งgit pushเพื่อผลักดันการเปลี่ยนแปลงของคุณไปยังเว็บเซิร์ฟเวอร์ รายละเอียดเกี่ยวกับการทำงานของที่นี่: gitready.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.

9
ฉันมีปัญหาเดียวกัน แต่ฉันไม่สามารถแก้ไขได้ด้วยวิธีนี้เพราะไฟล์. git / index.lock ไม่มีอยู่จริง: touch .get/index.lockreturntouch: .get/index.lock: No such file or directory
emersonthis

24
Emerson คุณดูเหมือนจะมองหา. get แทนที่จะเป็น. git ซึ่งจะไม่มีอยู่จริง
Apie

3
ปฏิเสธสิทธิ์การใช้งานหมายความว่าคุณต้องให้ผู้ใช้ที่คุณใช้ Git ด้วยสิทธิ์ในการอ่าน / เขียนในไฟล์ ตรวจสอบคำสั่ง chmod (บน * ระวังหรือคุณสมบัติ -> แท็บความปลอดภัยใน WIndows)
Stijn de Witt

9
หากข้อผิดพลาดของคุณระบุว่า "การอนุญาตถูกปฏิเสธ" คุณอาจคัดลอกไฟล์จากที่อื่นและไม่มีสิทธิ์ในไดเรกทอรี. git ใช้ls -lเพื่อดูสิทธิ์จากนั้นใช้sudo chown -R username ./*และsudo chgrp -R username ./*เพื่อเปลี่ยนผู้ใช้และกลุ่มเป็นของคุณเองสำหรับไฟล์ทั้งหมดในโครงการ
chech

158

ใน Windows ให้ทำเช่นนี้ในพรอมต์คำสั่งจากไดเรกทอรี repo:

cd .git
del index.lock

UPDATE: ฉันพบว่าฉันไม่จำเป็นต้องทำตามขั้นตอนนี้หากฉันรอสักครู่หลังจากที่ฉันปิดไฟล์ที่ฉันกำลังทำงานอยู่ก่อนที่จะลองเปลี่ยนสาขา ฉันคิดว่าบางครั้งปัญหานี้เกิดขึ้นเนื่องจากคอมไพล์ทันกับระบบไฟล์ช้า นักพัฒนาอื่น ๆ ที่มีความรู้ด้าน git สามารถพูดสอดหากพวกเขาคิดว่าสิ่งนี้ถูกต้อง


3
แปลกพอฉันได้รับข้อผิดพลาดเกี่ยวกับไฟล์ แต่เมื่อฉันพยายามลบไฟล์ใน cmd.exe มันบอกว่าไม่พบไฟล์ :) ผลลัพธ์เดียวกันกับเส้นทางแบบสัมบูรณ์และสัมพัทธ์ แต่ใน Git Bash ใช้งานได้ (กับrm -f index.lock)
Juha Untinen

ในกรณีของฉันฉันดำเนินการ "ดึงข้อมูล" หลังจากการรีสตาร์ท Sourcetree สองสามครั้งและทำงานได้
maxivis

32

ลองเลิกใช้ Xcode เนื่องจากเป็นไคลเอนต์ git คุณต้องออกจาก Xcode เพื่อหลีกเลี่ยงปัญหาของ git ในบรรทัดคำสั่ง


4
ดี! โปรดทราบว่า Xcode และลูกค้า Git อื่น ๆ สามารถเป็นผู้ร้ายได้ ในกรณีของฉันมันปิด gitX ด้วย
NSTJ

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

24

ฉันมีปัญหาเดียวกัน ฉันเหนื่อย

rm -f ./.git/index.lock 

และคอนโซลให้ข้อผิดพลาด จากนั้นฉันก็ลอง

rm --force ./.git/index.lock

และนั่นก็ใช้ได้

โชคดี! มันใช้งานได้ดีมาก


ฉันไม่เห็นโฟลเดอร์. git ในกรณีของฉัน ฉันเห็น. / และ .. / เท่าที่ไดเรกทอรีที่ซ่อนอยู่มีความกังวล

คุณใช้คอมพิวเตอร์ประเภทใด
Olivia Steger

18

ในไดเรกทอรี. git ของฉันไม่มีไฟล์ index.lock ดังนั้นเมื่อใช้เชลล์ Git Bash ฉันก็วิ่ง ...

cd .git
touch index.lock
rm index.lock

คำสั่ง touch สร้างไฟล์ขึ้นมาและปัญหาก็หมดไป


ทำไม downvote นี้ ฉันได้รับข้อความแสดงข้อผิดพลาดคล้ายกับ OP สิ่งนี้ทำให้ฉันอ่อนแอและอาจช่วยคนอื่นได้
John Livermore

1
ฉันพบสิ่งนี้เล็กน้อย: (1) ฉันพบข้อความแสดงข้อผิดพลาดและทดลอง 'แก้ไข' ที่แตกต่างกัน (2) ฉันพบว่าindex.lockไม่มีอยู่ (3) ฉันใช้touchคำสั่งด้านบน; (4) ไคลเอนต์ git ของฉันหยุดทำงานตามปกติ (5) ฉันลบindex.lock; (6) ที่เก็บเริ่มทำงานได้ตามปกติอีกครั้ง
clarpaul

ไม่ควรลงคะแนนแน่นอนเรียงปัญหาของฉันออก ฉันไม่ได้มีไฟล์ index.lock แต่เมื่อฉันสร้างไฟล์ขึ้นมาแล้วก็ลบมันไป
Bynho

touch index.lockหมายถึง John อยู่ใน * NIX แต่ฉันเพิ่งทำเทียบเท่ากับ Windows 10 (สร้างindex.lockไฟล์ด้วยโปรแกรมแก้ไขข้อความลบออกทันทีและทำกำไร) และปัญหาหายไป
ruffin

1
@Spark อัพเดท ...
John Livermore

13

คุณสร้างที่เก็บโดยใช้rootผู้ใช้โดยบังเอิญหรือไม่?

มันเพิ่งเกิดขึ้นที่ฉันสร้างที่เก็บ git ในฐานะrootผู้ใช้

ฉันลบที่เก็บ git และสร้างขึ้นอีกครั้งโดยไม่ต้องsudoและใช้งานได้


1
ใช่นั่นแหละ ขอบคุณ
Natassia Tavares

9

ฉันมีปัญหานี้ด้วยและฉันพบว่ามันเป็นปัญหาสิทธิ์จริง ๆ ดังนั้นฉันทำสิ่งนี้:

sudo chown -R : .git #change group
sudo chmod -R 775 .git #change permission

จากนั้น ererything เป็นสิ่งที่ดีและ gaa คือความสำเร็จ

แล้วฉันใช้ gp ฉันได้รับข้อผิดพลาดอื่นเกือบจะเหมือนกัน

sudo chown -R "${USER:-$(id -un)}" . #use this can fix the problem

ยอดเยี่ยมสิ่งนี้ทำอะไร "$ {USER: - $ (id -un)}"
นิค

7

ใน Mac OS X ให้ทำเช่นนี้ในพรอมต์คำสั่งจากไดเรกทอรี repo:

cd .git
rm index.lock

1
ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Channox

5

หากคุณใช้หนึ่งใน#intelliJIDEs และรับข้อความนี้ (ฉันกำลังใช้#webtorm) โปรดสังเกตว่าปัญหานี้อาจเกิดขึ้นเนื่องจากการซ่อนหนึ่งในโฟลเดอร์โครงการ (ภายในการตั้งค่า) และสิ่งนี้สามารถป้องกันไม่ให้GITผสาน


5

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


ฉันเพิ่งติดตั้งปลั๊กอิน Sublime Text GitSavvy และมีข้อผิดพลาดนี้ตั้งแต่นั้นมา ขอบคุณสำหรับคำใบ้ @snorkelzebra
Kitze

5

ถ้าหลังจากคุณลอง:

rm -f ./.git/index.lock

คุณได้รับ:

rm: ไม่สามารถยกเลิกการเชื่อมโยง 'index.lock': การอนุญาตถูกปฏิเสธ

ลองปิดซอฟต์แวร์ทั้งหมดที่อาจใช้ Git ฉันเปิด Source Tree และ Visual Studio และหลังจากปิดทั้งคำสั่งแล้ว


5

ใน Windows ฉันจัดการเพื่อให้สามารถลบไฟล์ล็อคหลังจากสิ้นสุดภารกิจสำหรับกระบวนการ Git Windows (32 บิต) ทั้งหมดในตัวจัดการงาน

โซลูชัน (Win 10)

1. จบภารกิจสำหรับกระบวนการ Git Windows (32 บิต) ทั้งหมดในตัวจัดการงาน

2. ลบไฟล์. git / index.lock


4

ในกรณีของฉันทางออกคือต้องรอ 5 นาที เห็นได้ชัดว่าการดำเนินการก่อนหน้าของฉันยังคงทำงานอยู่ แต่ฉันก็ไม่รู้ ฉันใช้คอมโบเต่าบน windows



4

ฉันคิดว่ามีทางออกที่ดีกว่าการลบไฟล์ (และพระเจ้ารู้ว่าจะเกิดอะไรขึ้นต่อไปเมื่อลบ / สร้างไฟล์ด้วย sudo):

git gc


3

ฉันลองด้วยหลายวิธี แต่วิธีนี้ใช้ได้สำหรับฉัน (ฉันใช้เทอร์มินัลของ PyCharm):

$ cd .git/

$ rm -f index.lock

จากนั้นฉันลองอีกครั้งเพื่อสร้าง repo git ที่ว่างเปล่า:

$ git init

$ git add .

$ git commit -m "commit msg"

3

หากเป็น submodule ให้ลองแทนในไดเรกทอรีที่เก็บของคุณ:

rm -f ../.git/modules/submodule-name/index.lock

เปลี่ยนชื่อ submodules เป็นชื่อ submodule ของคุณ


2

การแก้ปัญหาสำหรับปัญหานี้คือการคัดลอกไฟล์ xcode / project สามไฟล์ในไดเรกทอรีจากนั้นสร้างไดเรกทอรีใหม่ (Whereever อย่างอื่น) แล้ววางสามไฟล์ / ไดเรกทอรี


2

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


2

ในกรณีใดก็ตามคุณกำลังทำการรีบูตจากโฟลเดอร์ที่ถูกซิงค์โดยบริการคลาวด์ (ดรอปบ็อก, ไดรฟ์, ออนไดรฟ์ ฯลฯ ) คุณควรหยุดชั่วคราวหรือปิดการซิงค์เนื่องจากจะรบกวนสิทธิ์ระหว่างการรีบูต .



2

ฉันเปลี่ยนการอนุญาตไดเรกทอรีของฉันแล้วฉันจึงรู้ว่าอาจเกี่ยวข้องกับการอนุญาต ในกรณีของฉันฉันลบผู้ใช้ที่ไม่ต้องการ (_www) จากนั้นให้ใช้สิทธิ์อ่าน / เขียนสำหรับทุกคนโดยนำไปใช้กับเนื้อหาทั้งหมด นี่คือบน Mac

การอนุญาตไดเรกทอรีบน Mac


2

คำสั่งลบทั้งหมดไม่ทำงานสำหรับฉันสิ่งที่ฉันทำคือการไปที่นั่นโดยใช้เส้นทางที่ให้ไว้ในคอมไพล์แล้วลบมันด้วยตนเอง


2

อย่าใช้ปลั๊กอินAtom platformio-atom-ide-terminalเพื่อทำสิ่งนี้ ใช้เทอร์มินัลของ DISTRO DIRECTLY ของคุณโดยตรง

ฉันยังคงได้รับข้อผิดพลาดนี้ในขณะที่กำลังรีบูต / squishing และไม่รู้ว่าเพราะอะไรเพราะฉันทำมาหลายครั้งแล้ว

ไม่สำคัญว่าฉันจะลบindex.lockไฟล์กี่ครั้ง แต่ทุกครั้งที่มันล้มเหลว

ปรากฎว่าเป็นเพราะฉันใช้ปลั๊กอินเทอร์มินัลATOM EDITOR เมื่อฉันใช้เทอร์มินัลที่มาพร้อมกับ Ubuntu มันทำงานได้อย่างมีเสน่ห์


2

เพียงไปที่ D: /project/androidgc/.git/ ไดเรกทอรีนี้และลบ index.lock สิ่งนี้ใช้ได้สำหรับฉัน


1

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

  • ชำระเงินสาขาหลัก
  • git svn rebase (บนมาสเตอร์)
  • ชำระเงินสาขาที่คุณกำลังทำงานอยู่
  • git svn rebase

1

เพิ่มเล็กน้อยเพราะฉันต้องใช้คำตอบที่แตกต่างกันเพื่อให้ได้ทางออกที่แท้จริง (สำหรับฉัน)

สิ่งนี้ทำเพื่อฉัน:

  1. เปิดสาขาที่คุณกำลังทำงาน
  2. เทอร์มินัลเปิด (ฉันใช้เทอร์มินัลใน Git GUI)
  3. พิมพ์คำสั่ง: cd .git
  4. พิมพ์คำสั่ง: rm -f index.lock

บางคนอาจจะต้องใช้แทน-Force -fคุณสามารถตรวจสอบบรรทัดคำสั่งของสถานีของคุณโดยการดำเนินการคำสั่งในสิ่งที่ terminal git helpของคุณที่ชอบ:


0

โซลูชั่นทั้งหมดถูกต้อง:

Just remove .git from your corrupted repository, 

then copy this file if back from another clone (if you don't have it in another machine, just clone it).

ในที่สุดสิ่งที่สร้างความแตกต่างให้ฉัน:

  • หลีกเลี่ยงการใช้sudoเพื่อคลายซิปหรือคัดลอกโฟลเดอร์. git ใหม่ Git จะไม่สามารถเข้าถึงโฟลเดอร์. git ได้หากคุณใช้สิทธิ์ superuser เพื่อสร้างมันขึ้นมา

0

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

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