我目前遇到了需要删除.git/index.lock
文件的问题。我没有太多犹豫,我猜这个文件以某种方式锁定了可以访问git repo的进程。但是,我似乎无法找到关于此文件实际执行的内容的良好描述/文档以及为什么会出现例如in this question(link)所描述的问题。
index.lock
实际上做了什么,以及导致人们与此文件相关的问题的原因是什么?
我很高兴知道将来可以防止这个问题。
答案 0 :(得分:5)
我是从https://www.kernel.org/pub/software/scm/git/docs/technical/api-lockfile.html找到的。这会告诉您.git/index.lock
的作用。
- 相互排斥。当我们写出一个新的索引文件时,首先 我们创建一个新文件
$GIT_DIR/index.lock
,编写新文件 将内容放入其中,并将其重命名为最终目的地$GIT_DIR/index
。我们尝试创建$GIT_DIR/index.lock
文件与O_EXCL,以便我们可以注意到并失败的时候 else已经在尝试更新索引文件。- 自动剔除。在我们创建“锁定”文件后,我们 可能决定
die()
,我们希望确保我们 删除尚未提交到最终文件的文件 目的地。这是通过记住我们的锁定文件来完成的 在链接列表中创建并从中清除它们atexit(3)
处理程序。优秀的锁定文件也被删除 当程序死于信号时。
我猜你说的问题的原因是某些操作系统上自动剔除的故障。几年前我在Linux上使用过Git,但还没有遇到过这样的问题。