文件取消链接失败。我应该再试一次吗?

838

我的本地Git仓库中有一个文件出现了问题。当我试图切换分支时,会显示以下提示:

Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)

那可能意味着什么?


1
请查看这个问题 - RDL
可能是 Git rebase got 'unlink of file failed' error 的重复问题。 - Josh Lee
1
还要检查git进程对该文件是否具有写权限。 - boileau
5
可能是文件解除链接失败的重复问题。 - BartoszKP
考虑到现在这是谷歌搜索中的第一个结果,而且这里的问题和答案已经获得了比其他链接问题高出10倍以上的浏览量和赞数,我敢说这现在已经成为“解除文件链接失败”问题的事实参考问答。 - Suman
显示剩余3条评论
39个回答

0

我通过以管理员身份重新启动 PHPStorm(或者您的程序)解决了这个问题。


0

这可能是一个单独的 gitk 窗口,用于查看一些 git 历史记录。

只需关闭该窗口即可解决该问题。


0
在我的情况下,针对该特定文件有一个复制或替换窗口打开,因此出现了取消链接错误。我关闭了它,现在没有取消链接错误了。

0

如果你正在开发一个 Web 应用程序,常见的原因是忘记关闭服务器。例如,这可能是一个简单的 Node.js 进程,或者在 Windows 上作为后台进程运行更加不引人注目的 IIS 进程。


0

我曾经遇到过这个错误,关闭正在打开该文件的应用程序解决了它。然后我就能回去按“Y”了。


0

你可能会在 Git 2.29(2020年第四季度)中更少地看到这个错误:MinGW 上的“unlink”仿真已经被优化。

请参见提交记录 680e0b4(2020年8月17日)作者是Jeff Hostetler(Jeff-Hostetler
(由Junio C Hamano -- gitster --合并于提交记录 5a04826,2020年8月19日)

mingw: 改进 mingw_unlink() 的性能

由 Jeff Hostetler 签署
由 Johannes Schindelin 签署

更新 mingw_unlink(),在强制删除文件之前先尝试使用现有权限删除。

当尝试删除一个只读文件时,Windows 会抛出错误。
mingw_unlink() 的兼容包装器总是在调用 _wunlink() 之前尝试对文件进行 _wchmod(666),以避免该错误。
然而,由于大多数工作树中的文件已经可写,因此这通常是多余的努力。

更新 mingw_unlink(),直接调用 DeleteFileW(),如果成功就返回。
如果失败,则回退到现有的代码路径,更新权限并使用 _wunlink() 来获取现有的错误码映射。


我使用的是2.30.1.windows.1版本,但仍然经常遇到这个问题。 - harvzor
@harvzor 你是使用Git for Windows还是通过WSL2 Linux会话使用Git? - VonC
输入 where git 后返回 C:\Program Files\Git\cmd\git.exe,所以我很确定这是Windows系统,这也可能是为什么版本中也有“windows”的原因。我在使用git时打开了VS Code,所以最受欢迎的答案可能正确,关于Code锁定文件的问题。 - harvzor
@harvzor 我同意,特别是考虑到VSCode自动获取Git存储库(https://github.com/microsoft/vscode/issues/40282)的功能。 - VonC

0

对我来说,我必须进入我的.git文件夹并删除index.lock文件。之后,我可以像往常一样撤销。


0

我在进行git pull时遇到了同样的问题,正如上面所述,这是因为某个程序正在占用这些文件,不允许进行git pull。关闭该程序有所帮助。通常,检入文件的IDE(如Eclipse)将在后台占用它。关闭相同的IDE并重新运行git pull解决了我的问题。


0
在 Windows 上,当执行一个(相当大的)代码库的git clone时,遇到了这个错误。关闭SmartGit和备份软件(CrashPlan),然后它就可以正常工作了。不确定其中哪个起了作用,但如果您正在运行其中任何一个,这也可能适用于您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接