【问题标题】:Git - fatal: Unable to create '/path/my_project/.git/index.lock': File existsGit - 致命:无法创建'/path/my_project/.git/index.lock':文件存在
【发布时间】:2011-12-13 05:30:38
【问题描述】:

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

我用这个项目检查了我的目录的权限,这些权限设置在 777 上。在带有my_project 的目录的终端中,我设置了:

git init

然后如果我尝试

git add .

git commit -m "first upload"

所以我会得到错误

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 并在那里提交它,但不幸的是仍然出现相同的错误消息。

问题的原因是什么?

【问题讨论】:

  • 我遇到了这个问题,因为我在另一个终端使用 su 登录,然后切换回第一个一切正常
  • 兄弟我有同样的问题,使用“sudo git add . or git commit -m "first upload" "而不是" git add . or git commit -m "first upload" "
  • 我通过更改每个 stackoverflow.com/questions/14127255/… 的 .git 文件的权限来修复它,请参阅 Mahshid Zeinaly 的回答

标签: git


【解决方案1】:

试试

rm -f ./.git/index.lock

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

【讨论】:

  • 它不会自动发生。您需要执行命令git push 将您的更改推送到Web 服务器。有关其工作原理的详细信息在这里:gitready.com/beginner/2009/01/21/pushing-and-pulling.html
  • 我遇到了完全相同的问题,但我无法以这种方式解决它,因为 .git/index.lock 文件似乎不存在:touch .get/index.lock 返回touch: .get/index.lock: No such file or directory跨度>
  • 艾默生,您似乎在寻找 .get 而不是 .git ,后者不存在。
  • Permission denied 意味着您需要授予正在使用 Git 的用户对该文件的读/写权限。查看 chmod 命令(在 *nix 或属性 -> WINdows 上的安全选项卡上)
  • 如果您的错误提示“权限被拒绝”,您可能已经从其他地方复制了文件,并且没有 .git 目录的权限。使用ls -l查看权限,然后使用sudo chown -R username ./*sudo chgrp -R username ./*将项目中所有文件的用户和组更改为您自己的。
【解决方案2】:

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

cd .git
del index.lock

更新: 我发现,如果我在关闭正在处理的文件后稍等片刻,然后再尝试切换分支,则不需要执行此过程。我认为有时会因为 git 赶上慢速文件系统而出现此问题。如果其他更懂 git 的开发人员认为这是正确的,他们可以加入。

【讨论】:

  • 奇怪的是,我收到有关文件的错误,但是当我尝试在 cmd.exe 中删除文件时,它说找不到文件:) 绝对路径和相对路径的结果相同。但在 Git Bash 中,它可以工作(使用 rm -f index.lock
  • 在我的例子中,我在 Sourcetree 重启几次后执行了“Fetch”并工作了。
  • 虽然在这种情况下不会有问题,因为我们正在处理大小为 0 的单个文件,但通常使用 rmdir /s 是更好的做法。 cmd 中的 del 仅删除文件。即使这样,没有 /s 它也不会递归,只会删除顶级目录中的文件。因此,对于 cmd,您应该使用 rmdir /s 递归删除所有文件和文件夹。
  • 其实我有一个 react 项目,每次都需要在 github 上上传,我总是远程添加,我是通过“git init”来做的,但问题是,已经有一个 . git文件..,即使我删除了,这个错误仍然存​​在。
【解决方案3】:

尝试退出 Xcode - 因为它是一个 git 客户端,你必须退出 Xcode 以避免在命令行上出现 git 问题。

【讨论】:

  • 不错!请注意,Xcode 和其他 Git 客户端可能是罪魁祸首。就我而言,它也需要关闭 gitX。
  • 今天早上不得不删除我的锁定文件 10 次左右后,我终于偶然发现了这个答案。不知道 xcode 是如何打开的,但它肯定会破坏我的工作流程。感谢您的提示!
【解决方案4】:

我遇到了同样的问题。我试过了

rm -f ./.git/index.lock 

控制台给了我一条错误消息。然后,我尝试了

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

而且成功了。

祝你好运! 这个超级好用

【讨论】:

  • 我没有看到 .git 文件夹。就隐藏目录而言,我只看到 ./ 和 ../。
  • 你用的是什么类型的电脑?
【解决方案5】:

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

cd .git
touch index.lock
rm index.lock

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

【讨论】:

  • 为什么会被否决?我收到了与 OP 类似的错误消息。这解决了我,也许可以帮助其他人。
  • 我遇到了这种情况的轻微变体:(1)我遇到了错误消息并尝试了不同的“修复”; (2)发现index.lock不存在; (3)我使用了上面的touch命令; (4) 我的 git 客户端停止正常运行(充其量,它慢到爬行); (5) 我删除了index.lock; (6) 存储库再次开始正常运行。
  • 绝对不应该被否决,解决了我的问题。我没有 index.lock 文件,但是一旦我创建了一个并随后将其删除,提交就起作用了。
  • touch index.lock 暗示 John 在 *NIX 上,但我只是在 Windows 10 上做了同样的事情(使用文本编辑器创建一个 index.lock 文件,立即删除它,然后获利),问题出在走了。
  • 它被否决了,因为它缺少删除您刚刚使用touch 创建的index.lock 文件的最后一步。
【解决方案6】:

您是否不小心使用root 用户创建了存储库?

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

我删除了 git 存储库并在没有 sudo 的情况下再次创建它并且它可以工作。

【讨论】:

  • 是的,就是这样。谢谢
【解决方案7】:

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

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)}"
  • 在 Windows 10 + git bash 上不起作用(即使没有 sudo)
【解决方案8】:
  1. 运行任务管理器,找到 Git for windows 进程并杀死它。
  2. 删除.git文件夹下的index.lock文件
  3. 它对我有用!

【讨论】:

    【解决方案9】:

    你需要删除 index.lock 文件。

    在 Linux 中

    cd .git
    rm -f index.lock
    

    在 Windows(10) 中,在 repo 目录的命令提示符下执行此操作:

    cd .git
    del index.lock
    

    【讨论】:

      【解决方案10】:

      在 Mac OS X 中,在 repo 目录的命令提示符下执行此操作:

      cd .git
      rm index.lock
      

      【讨论】:

      • 没有这样的文件或目录
      【解决方案11】:

      在 Windows 中,我只能在任务管理器中为所有 Git Windows(32 位)进程结束任务后删除锁定文件。

      解决方案(Win 10)

      1.在任务管理器中结束所有 Git Windows(32 位)进程的任务

      2。删除 .git/index.lock 文件

      【讨论】:

        【解决方案12】:

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

        git gc
        

        【讨论】:

        • 因为是windows?尝试使用 cmder 或者使用 git kraken 可能会修复一些问题
        • 在所有这些响应的中间,都一遍又一遍地说同样的话(并且./.git/index.lock不存在),这解决了我的问题:)
        【解决方案13】:

        如果您正在使用#intelliJ IDE 之一并收到此消息(我正在使用#webtorm),请注意,由于隐藏了一个项目文件夹(在设置中),可能会出现此问题,这可以防止GIT来自合并。

        【讨论】:

          【解决方案14】:

          就我而言,解决方案是等待 5 分钟。显然我之前的操作仍在运行,但我只是不知道。我在 Windows 上使用乌龟 git。

          【讨论】:

            【解决方案15】:

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

            【讨论】:

            • 我最近安装了 Sublime Text 插件 GitSavvy 并且从那时起才出现此错误。感谢您的提示,@snorkelzebra
            【解决方案16】:

            如果你尝试后:

            rm -f ./.git/index.lock

            你得到:

            rm:无法取消链接“index.lock”:权限被拒绝

            尝试关闭所有可能使用 Git 的软件。 我打开了 Source Tree 和 Visual Studio,关闭这两个命令后都可以正常工作。

            【讨论】:

              【解决方案17】:

              使用这个:

              rm -Force ./.git/index.lock
              

              【讨论】:

                【解决方案18】:

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

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

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

                【讨论】:

                  【解决方案19】:

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

                  我在 rebase/squishing 提交时不断收到此错误,并且不知道为什么,因为我之前已经做过几次。

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

                  原来是因为我使用的是 ATOM EDITOR 终端插件。一旦我使用了 Ubuntu 附带的终端,它就像一个魅力。

                  【讨论】:

                    【解决方案20】:

                    .git/index.lock 有问题,请使用以下命令将其删除。

                    命令:

                    sudo rm -rf .git/index.lock

                    【讨论】:

                      【解决方案21】:

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

                      $ cd .git/
                      
                      $ rm -f index.lock
                      

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

                      $ git init
                      
                      $ git add .
                      
                      $ git commit -m "commit msg"
                      

                      【讨论】:

                        【解决方案22】:

                        解决这个问题的方法是复制目录下的三个xcode/project文件,然后新建目录(Whereever else),然后粘贴三个文件/目录。

                        【讨论】:

                          【解决方案23】:

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

                          【讨论】:

                            【解决方案24】:

                            如果出于某种原因,您正在从云服务(保管箱、驱动器、onedrive 等)同步的文件夹中执行变基,您应该暂停或关闭同步,因为它会干扰权限在变基期间。

                            【讨论】:

                              【解决方案25】:

                              对我来说是

                              rm -r .git-credentials.lock 
                              

                              【讨论】:

                                【解决方案26】:

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

                                【讨论】:

                                  【解决方案27】:

                                  所有删除命令都对我不起作用,我所做的是使用 git 中提供的路径导航到那里,然后手动删除它。

                                  【讨论】:

                                    【解决方案28】:

                                    只需转到 D:/project/androidgc/.git/ 这个目录并删除 index.lock 这对我有用。

                                    【讨论】:

                                      【解决方案29】:

                                      如果有人在使用 git svn,我遇到了同样的问题,但无法删除该文件,因为它不存在!。检查权限后,触摸文件并删除它,我不记得还有什么,这成功了:

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

                                      【讨论】:

                                        【解决方案30】:

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

                                        这是为我做的:

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

                                        有些人可能不得不使用-Force 而不是-f。您可以通过在终端中执行以下命令来检查终端的命令行:git help

                                        【讨论】:

                                          猜你喜欢
                                          • 2013-05-12
                                          • 2012-12-09
                                          • 1970-01-01
                                          • 2012-08-04
                                          • 2016-09-02
                                          • 1970-01-01
                                          • 2022-01-22
                                          • 2016-08-09
                                          • 2019-07-11
                                          相关资源
                                          最近更新 更多