Git-致命:无法创建'/path/my_project/.git/index.lock':文件存在


803

当我尝试将项目树移至git repo时,我仍然收到此错误消息。

我检查了此项目的目录权限,这些权限设置在777上。在终端中,my_project我设置了以下权限:

git初始化

然后,如果我尝试

git添加

要么

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.

我试过也创建一个新的仓库,并提交它,但是不幸的是仍然是同样的错误信息。

问题原因是什么?


1
我遇到了这个问题,因为我在另一个终端上用su登录,切换回了第一个,一切正常
maazza 2013年


3
我有同样的问题,请使用“ sudo git add。或git commit -m“首次上传”“代替” git add。或git commit -m“首次上传”“
mehdi zahrane

我通过更改每个stackoverflow.com/questions/14127255/…的 .git文件的权限来解决此问题,请参阅Mahshid Zeinaly的回答
vikramvi

Answers:


1736

尝试

rm -f ./.git/index.lock

在您的存储库目录中。该错误消息非常明确地指出了通常的原因,因此,如果没有其他git进程在运行(这是正常情况),请继续删除该文件。


7
它不会自动发生。您需要执行命令git push以将更改推送到Web服务器。有关其工作原理的详细信息,请访问:gitready.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.

9
我遇到了完全相同的问题,但无法以这种方式解决,因为.git / index.lock文件似乎不存在:touch .get/index.lock返回touch: .get/index.lock: No such file or directory
emersonthis 2013年

24
艾默生,您似乎正在寻找.get而不是.git,后者不存在。
阿比

3
权限被拒绝意味着您需要向正在使用Git的用户授予对该文件的读/写权限。签出chmod命令(在Windows上的* nix或“属性->安全”选项卡上)
Stijn de Witt

9
如果错误显示“权限被拒绝”,则可能是您从其他位置复制了文件,并且对.git目录没有权限。用ls -l看的权限,然后使用sudo chown -R username ./*sudo chgrp -R username ./*更改用户和组到你自己的项目中的所有文件。
chech 2015年

158

在Windows中,从repo目录的命令提示符中执行以下操作:

cd .git
del index.lock

更新:我发现,如果我关闭正在处理的文件之后稍等片刻,然后再尝试切换分支,则无需执行此过程。我认为有时由于git赶上缓慢的文件系统而出现此问题。如果他们认为这是正确的,则其他更具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文件夹。就隐藏目录而言,我只看到./和../。

您正在使用哪种类型的计算机?
奥利维亚·斯蒂格

18

在我的.git目录中,没有index.lock文件。因此,我使用Git Bash shell运行了...

cd .git
touch index.lock
rm index.lock

touch命令创建了文件,问题消失了。


为什么这被否决?我收到了与OP类似的错误消息。这固定了我,也许可以帮助其他人。
John Livermore'9

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用户创建了存储库?

碰巧我以root用户身份创建了git存储库。

我删除了git存储库,然后又重新创建了它,sudo并且可以正常工作。


1
是的,就是这样。谢谢
Natassia Tavares

9

我也有这个问题,我发现这确实是一个权限问题。所以我这样做:

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

那么一切都是伟大的,而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

如果您正在使用其中一个#intelliJIDE并收到此消息(我正在使用#webtorm),请注意,由于隐藏了项目文件夹之一(在设置中),因此可能会发生此问题,并且这可能会阻止GIT合并。


5

对我有用的解决方案是关闭崇高文本,因为正在运行的git进程是由编辑器启动的。


我最近安装了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上使用了乌龟git。



4

我认为有一个比删除文件更好的解决方案(上帝知道使用sudo删除/创建文件时接下来会发生什么):

git gc


3

我多次尝试了很多方法,但是这种方法对我有用(我使用了PyCharm的终端):

$ cd .git/

$ rm -f index.lock

然后我再次尝试创建一个空的git repo:

$ git init

$ git add .

$ git commit -m "commit msg"

3

如果是子模块,请在您的存储库目录中尝试以下操作:

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

将submodules-name更改为您的子模块名称。


2

解决此问题的方法是将三个xcode / project文件复制到目录中,然后创建新目录(在其他位置),然后粘贴三个文件/目录。


2

我们也可以杀死git进程。我通过GUI应用程序收到git的相同问题,出现问题,并且git无限工作。杀死进程将冻结与git一起使用的应用程序,只需重新启动它,一切都会好的。


2

万一出于某种原因,您正在从由云服务同步的文件夹(投递箱,驱动器,单驱动器等)中进行重新基准化,则应该暂停或关闭同步,因为这会在重新基准化期间干扰权限。



2

我已经更改了目录权限,所以我知道它可能与权限相关。在我的情况下,我删除了不需要的(_www)用户,然后通过对所有内容进行更改来对所有人应用读/写权限。这是在Mac上

Mac上的目录权限



2

请勿使用原子 platformio-atom-ide-terminal插件执行此操作。直接使用发行版的终端。

在重新定基础/压缩提交时,我一直收到此错误,并且不知道为什么,因为我已经做过几次了。

不管我删除多少次 index.lock文件失败,。

原来是因为我正在使用ATOM EDITOR终端插件。一旦我使用了Ubuntu附带的终端,它就会像魅力一样发挥作用。



1

如果有人使用git svn,我也有同样的问题,但是由于文件不存在而无法删除!在检查权限之后,触摸文件并将其删除,我不记得还有什么,这就是窍门:

  • 检出master分支。
  • git svn rebase(在主服务器上)
  • 签出您正在处理的分支
  • git svn rebase

1

有点补充,因为我不得不使用不同的答案来获得实际的解决方案(对我来说)。

这为我做到了:

  1. 打开您正在处理的分支
  2. 打开终端(我在Git GUI中使用终端)
  3. 输入命令: cd .git
  4. 输入命令: rm -f index.lock

有些可能必须使用-Force代替-f。你可以在你的终端类似于执行命令检查终端的命令行: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文件夹

0

当我在与仓库的根文件夹相对应的目录(即.git所在的目录)的子目录中时,发生了这种情况。移至根目录解决了该问题-以使所有文件引用更加不便为代价,因为您必须转到path / to / folder / foo.ext而不是foo.ext

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.