git index.lock我尝试提交时存在文件,但无法删除该文件

asa*_*ahi 179 git

当我做'git commit'时,我得到以下内容:

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

但是,当我这样做时ls project_path/.git/index.lock,说该文件不存在.我应该怎么做?我也注意到project_path/.git由root拥有,不确定这是否与我遇到的问题有关.

git版本是1.7.5.4

编辑:似乎问题很可能是我运行的另一个进程,即向项目目录编写(我不知道).我重新启动了我的机器然后我没有任何问题.

Rya*_*n S 290

这可能是一个旧的回复,但我希望这对下一个需要此解决方案的人更有用.

在linux/unix/gitbash/cygwin上,试试吧

rm -f .git/index.lock

在Windows命令提示符下,尝试:

del .git\index.lock

希望有所帮助,我在这里找到了这个解决方案:致命:无法创建'... git/index.lock'文件存在

  • 鉴于问题中的问题是他无法删除文件,为什么您认为尝试删除文件应该是解决方案? (50认同)
  • 对我来说,关闭和打开SourceTree已经解决了这个问题......暂时我想. (4认同)
  • @skyking在原来的问题中有一个错误,说“致命:无法创建'project_path/.git/index.lock':文件存在。”,它说“文件存在”,删除它是简单的解决方案。如果文件甚至不在原始问题中,为什么我会建议删除它? (3认同)

And*_*ure 35

对于Windows:

  • 从以管理员身份打开的powershell控制台中,尝试
> rm -Force ./.git/index.lock
Run Code Online (Sandbox Code Playgroud)
  • 如果这不起作用,则必须终止所有git.exe进程
> taskkill /F /IM git.exe
SUCCESS: The process "git.exe" with PID 20448 has been terminated.
SUCCESS: The process "git.exe" with PID 11312 has been terminated.
SUCCESS: The process "git.exe" with PID 23868 has been terminated.
SUCCESS: The process "git.exe" with PID 27496 has been terminated.
SUCCESS: The process "git.exe" with PID 33480 has been terminated.
SUCCESS: The process "git.exe" with PID 28036 has been terminated.
> rm -Force ./.git/index.lock
Run Code Online (Sandbox Code Playgroud)


小智 20

在运行Visual Studio 2015 RC(v4.6.00057)和SourceTree(v1.6.14.0)的Windows平台上也会出现此错误.

解决方案:假设您要使用源代码树作为源代码管理器,只需在Visual Studio中禁用源代码控制提供程序,如下所示:

  1. 转到:工具>选项>源代码管理
  2. 选择Current source control插件为:None


Dan*_*Lin 9

  1. 检查git是否仍在运行(ps -ef | grep git)
  2. 如果没有,请删除锁定的文件
  3. 如果是的话,首先杀死git进程.


Tou*_*aza 8

尝试

rm -f ./.git/index.lock
Run Code Online (Sandbox Code Playgroud)

如果你没有运行其他git进程,那么只需删除相应项目的index.lock文件.


小智 7

当您取消从中间的原点取消时会发生这种情况.

所以你可以做的是从你的.git目录中手动删除index.lock文件.

rm -f ./.git/index.lock
Run Code Online (Sandbox Code Playgroud)

cd进入项目目录并运行此命令.

  • 鉴于问题中的问题是他无法删除文件,为什么您认为尝试删除文件应该是解决方案? (6认同)

Myz*_*enz 6

刚刚遇到这个问题...... Gitbox有问题.所以也许你有一个GUI运行导致问题.


小智 6

del .git\index.lock 为我工作。

我在从 master 分支结帐新分支时遇到了这个问题。

删除index.lock文件后很容易发生结帐。


cal*_*ari 5

可能(它发生在我身上),ls命令说它不存在,因为当前用户没有权限到达该目录或文件.

删除锁定并确保您正在与正确的用户执行git以避免权限问题.

如果你在带有sudo命令的GNU/Linux盒子里:

sudo rm project_path/.git/index.lock


Ste*_*lin 5

  1. 关闭每个可能影响此.git / index.lock文件的窗口
  2. 删除.git / index.lock文件。
  3. 打开命令行编辑器,并cd到git文件的位置。

(如果创建了文件,只需从cd到该位置,那么问题就出在您的编辑器上。关闭您的编辑器。不要再次使用此编辑器来执行此任务。您可以使用git命令继续)


小智 5

就我而言,简单地说,转到project_path/.git并删除index.lock文件。尝试推送你的代码它会起作用。


Cas*_*bel 3

除非您实际上想让 root 拥有您的存储库,否则这听起来就像您不小心以 root 身份运行了 Git 命令(甚至可能是初始克隆/初始化)。如果您打算这样做,那么您将不得不以 root 身份运行存储库中的所有 Git 命令。如果你没有,那就跑去sudo chown your-user[:your-group] -R .git取得它的所有权,然后看看事情是否有效。