Windows 如果存在git index.lock,我是否可以安全地删除它,或者是否需要执行更多操作来验证完整性?

Windows 如果存在git index.lock,我是否可以安全地删除它,或者是否需要执行更多操作来验证完整性?,windows,git,Windows,Git,在过去的几周里,我多次收到一条关于index.lock存在的消息 删除该文件是中提到的解决方案 删除该文件是否足够,或者是否需要执行其他操作(是否有方法验证完整性等?) 这是在安装了git命令行工具、Ortoisegit和SourceTree的Windows x64系统(完全修补)上安装的。没有人提到索引锁的作用。 然而,它记录在Git发行版的文件“”下 删除那个文件就足够了吗 在这些文档之后,似乎删除就足够了 锁文件API lockfile API有两个用途: 互斥 当我们写出一个新的索引

在过去的几周里,我多次收到一条关于index.lock存在的消息

删除该文件是中提到的解决方案

删除该文件是否足够,或者是否需要执行其他操作(是否有方法验证完整性等?)

这是在安装了git命令行工具、Ortoisegit和SourceTree的Windows x64系统(完全修补)上安装的。

没有人提到索引锁的作用。
然而,它记录在Git发行版的文件“”下

删除那个文件就足够了吗

在这些文档之后,似乎删除就足够了

锁文件API lockfile API有两个用途:

  • 互斥
    当我们写出一个新的索引文件时,首先创建一个新文件
    $GIT\u DIR/index.lock
    ,将新内容写入其中,并将其重命名为最终目标
    $GIT\u DIR/index
    。我们尝试使用O_EXCL创建
    $GIT_DIR/index.lock
    文件,这样当其他人已经尝试更新索引文件时,我们就可以注意到并失败

  • 自动清除积垢
    创建“锁定”文件后,我们可能会决定
    die()
    ,并希望确保删除尚未提交到最终目标的文件。
    这是通过记住我们在链表中创建的锁文件并从
    atexit(3)
    处理程序中清除它们来实现的。当程序因信号而终止时,未完成的锁文件也会被删除

在Windows上,不应该存在权限问题(比如一个Git工具将该文件创建为“
root
”)。
唯一的问题是您的Windows工具之一要:

  • 在系统帐户而不是用户帐户下运行
  • 或者启动暂存文件(意味着创建一个索引并创建index.lock文件),并使用另一个工具来启动暂存以及同一repo中的文件
考虑到文件是在
O_exc
锁定方案下创建的,可能无法创建该文件,因为它被另一个PID锁定。
作为:

如果文件存在并且指定了
O_create
,则
O_EXCL
所做的唯一事情就是导致调用失败


2015年8月更新git 2.6+(2015年第三季度)

参见,,…(巨大列表),(2015年8月10日)作者。
(于2015年8月25日合并)

tempfile API允许创建、删除临时文件,并以原子方式重命名这些文件。
程序结束时仍处于活动状态的临时文件将自动清理。

Lockfiles是在这个API之上构建的。

现在,该文档文件不再存在于repo中,但您可以在@DrewNoakes上阅读头文件中的文档,谢谢。我已经恢复了到api-lockfile.txt的链接,在阅读之后,完成了
git log-1--Documentation/technical/api lockfile.txt
并找到了它。