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.
4条答案
按热度按时间juzqafwq1#
这也发生在我身上,只是删除文件名为
index. lock
这是在git文件夹.在你删除它之后,尝试重新提交它.它解决了我的问题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.
iezvtpos3#
index.lock
文件不断重复出现很可能是因为GitHub桌面或其他程序(例如Visual Studio)或进程仍在使用它。在极少数情况下,这可能是Git中的bug。
如果您无法轻松地确定罪魁祸首并防止重现行为,您应该考虑重新启动计算机,然后在启动GitHub Desktop和/或Visual Studio之前删除
index.lock
文件。作为alternative,您可以考虑:
dz6r00yl4#
在你的git文件夹里有一个名为HEAD.lock的文件夹。删除并重试提交。这是我的工作