git rebase导致“文件取消链接失败”错误

时间:2019-03-22 12:00:11

标签: git

通常,当我执行git pull --rebase时,会得到以下输出:

> git pull --rebase
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
Enumerating objects: 249988, done.
Counting objects: 100% (249988/249988), done.
Delta compression using up to 12 threads.
Compressing objects: 100% (62830/62830), done.
Writing objects: 100% (249988/249988), done.
Total 249988 (delta 179539), reused 249988 (delta 179539)
Unlink of file '.git/objects/pack/pack-00a0089ffcdc3d5ea5d2cc81042b741ba6d55a7d.idx' failed. Should I try again? (y/n)

对于每个被锁定的文件,该问题都会重复一百次左右。

所引用的文件可以是任何随机形式的文件,但始终是.git/objects/pack/目录中的文件。据我所知,没有其他软件可以将这些文件锁定。

似乎这个问题主要发生在切换分支之后。

我正在Windows 10上使用Git 2.18。

我不喜欢涉足WLS或git-bash。虽然这是一种使基准工作的解决方法,但我最终还是希望在常规命令提示符下摆脱此问题。

另一种解决方法是先执行git gc。该命令能够以某种方式释放这些文件并使后续命令按预期运行。

This question似乎是我的问题的重复,但是谈到了Git 2.8中的修复(我们现在还远远不能解决),并且发布者使用git-bash,无论如何这都是不同的情况。 / p>

1 个答案:

答案 0 :(得分:0)

此消息表示您系统上的其他进程正在使用这些文件。您可能拥有使用Git或libgit2来访问这些文件的编辑器插件或其他软件,并且Windows不允许在使用它们时将其删除。这是Windows和Win32 API的限制,不适用于Unix系统或WSL。

您可以关闭或终止其他进程,重新启动或切换为使用WSL,这将允许删除正在使用的文件。