我的本地git存储库中的一个文件发生了问题。当我试图改变分支时,它会说:

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

这意味着什么?


当前回答

如果您正在开发web应用程序,一个常见的原因是忘记关闭服务器。例如,这可能是一个简单的Node.js进程,或者在windows上,您的IIS进程作为后台进程运行得更加不显眼。

其他回答

运行后命令

git rm -rf foo.bar

我看到了错误

Unlink of file 'foo.bar' failed. Should I try again? (y/n)

因为另一个程序正在使用此文件。例如,当我在调试模型中运行Java web应用程序或在服务器上运行web应用程序时,我不能删除日志文件。关闭应用程序服务器(或关闭调试进程),然后重试

git rm -rf foo.bar

我看到文件已被删除。

我遇到了这个问题,并通过命令gitgc解决了它上面的命令删除临时文件和不必要的文件。(垃圾收集器。)

我在/.git/objects/pack文件夹中的.tmp文件中遇到了这个问题。我认为在推或拉过程中发生了一些故障,所以我删除了这些临时文件,并将HEAD重置为上次提交。不确定是否建议这样做,但这对我有用。此外,git-count-objects-v还给了我一个不属于pack文件夹的.tmp文件列表。

或者要在windows git中隐藏y/n消息,请打开cmd.exe并运行:

SETX GIT_ASK_YESNO false

参见此处:https://twitter.com/petercamfield/status/494805475733807104

我在进行git拉取时也遇到了同样的问题,如上所述,这是因为一个保存这些文件的程序不允许git拉。关闭程序有帮助。通常,签入文件的IDE(如Eclipse)将在后台保存文件。关闭同一个并重新运行git pull为我解决了问题。

在我的例子中,没有进程触及文件或目录。如果路径很长,可能会发生这种情况,因为操作系统限制(windows)。尝试在全局git配置中启用longpath支持标志,如下所示:

git config --global core.longpaths true

或者尝试设置是/否回答标志,如果这对你来说不冲突

set GIT_ASK_YESNO=false

如果路径太长,我还没有找到成功的解决方案。