git 存储库中已存在锁定文件,这会阻止此操作完成

jaxagkaj  于 2022-12-02  发布在  Git
关注(0)|答案(4)|浏览(902)

我正在做一个ASP.NET核心项目。我试图用GitHub桌面提交分支。但是每次我尝试提交时,我总是得到这个错误:
存储库中已存在锁定文件,这会阻止此操作完成。
在互联网上搜索时,我找到的唯一解决方案是手动删除.git文件夹内的index.lock文件。
但是当我删除这个档案时,每次我尝试认可时,它都会重新出现,让我无法认可。我已经尝试从Visual Studio认可,但也失败了。
有人能帮我吗?

juzqafwq

juzqafwq1#

这也发生在我身上,只是删除文件名为index. lock这是在git文件夹.在你删除它之后,尝试重新提交它.它解决了我的问题

  • 步骤1:转到所需的文件夹
  • 步骤2:转到文件夹选项
  • 步骤3:勾选显示隐藏文件/文件夹
  • 第4步:将有一个git文件夹显示给你,你只需从那里删除index.lock文件,你就可以再次提交了。
b1payxdu

b1payxdu2#

Git使用index.lock来了解某个Git进程--可能是这个进程,如果它自己创建了index.lock,也可能是其他Git进程--正在忙碌处理仓库中需要锁定Git索引的事情。当Git成功创建了这个锁文件后,它就会继续自己的工作,更新各种内部数据库,然后,它会 * 删除 * 这个锁文件,以表明它已经完成,而 * 其他 * Git命令现在可以开始,做他们的事情,并完成。
如果你的Git系统有bug,Git命令可能会创建index.lock,然后开始工作,然后崩溃,留下锁文件。在这种情况下,正确的做法是升级到没有bug的Git,这样问题就不会再次出现,同时删除index.lock文件。(你可以按任意顺序来做,但如果bug仍然存在,一些Git命令可能会留下假锁。)由于有相当广泛的测试套件,这种bug在Git中已经很少见了--在糟糕的过去,它更常见,但现在它应该几乎不会发生了。
如果您的 * 计算机本身崩溃 *(由于非Git的bug,或者电源故障,或者其他原因)当Git正在执行这些操作时,有可能Git永远没有机会删除index.lock文件。在这种情况下,你只需要手动删除index.lock文件。然而,在计算机崩溃后,Git内部数据库的 * 其他 * 部分可能已经在崩溃中损坏,所以运行git fsck是明智的。即使在正常的系统上,git fsck程序也会打印出一些消息,所以不要对各种“dangling commit”或“dangling blob”消息过于警惕:这些只是信息性的。(一般来说,理想情况下,你的电脑本身根本不应该崩溃,你的电源也不应该失灵,2021年2月德克萨斯州的人也不应该冻死,但世界并不总是理想的。)
(Windows系统有时会看到一些防病毒软件的不良行为。在某些情况下,这可能会自行消失。我避免Windows,所以除了“避免Windows”,我在这里没有具体的建议。)
最后,有一个问题最近已经成为一些人的常见问题,因为云存储是如此吸引人。1具体来说,如果你存储一个Git仓库(.git目录),甚至是在虚拟机上的共享磁盘或共享文件系统设置中,试图同步此存储区域的不同代理之间的 * 竞争 * 可能会损坏您的Git仓库,包括恢复伪造的index.lock文件,甚至破坏Git的内部数据库。不要这样做!将Git repository 保存在非共享的本地磁盘区域。
1嗯,至少从表面上看。确实有一些优点,但我个人订阅了Lamport definition of a distributed system: A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.

iezvtpos

iezvtpos3#

index.lock文件不断重复出现很可能是因为GitHub桌面或其他程序(例如Visual Studio)或进程仍在使用它。
在极少数情况下,这可能是Git中的bug。
如果您无法轻松地确定罪魁祸首并防止重现行为,您应该考虑重新启动计算机,然后在启动GitHub Desktop和/或Visual Studio之前删除index.lock文件。
作为alternative,您可以考虑:

  • 存储更改,
  • 移动到另一个分支,
  • 往后退,
  • 应用隐藏,以及
  • 再推。
dz6r00yl

dz6r00yl4#

在你的git文件夹里有一个名为HEAD.lock的文件夹。删除并重试提交。这是我的工作

相关问题