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

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

这意味着什么?


当前回答

如果关闭IDE并运行此处列出的各种git命令无济于事,请尝试手动关闭所有正在运行的Java进程。我有一个可能是eclipse遗留下来的Java进程,它以某种方式打开了一个配置文件。

其他回答

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

git config --global core.longpaths true

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

set GIT_ASK_YESNO=false

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

我尝试了这一页上的每一条提示,但没有任何帮助。我正在进行git获取和git重置——硬起源/开发给了我一个未知的错误。我无法重置为最新提交。

有帮助的是检查另一个分支,然后检查上一个分支。很奇怪,但它解决了问题。

您可能会在Git 2.29(2020年第4季度)中看到这种错误:MinGW上的“unlink”仿真已经优化。

见Jeff Hostetler(Jeff Hostet ler)提交的680e0b4(2020年8月17日)。(由Junio C Hamano(吉斯特)于2020年8月19日提交5a04826合并)

mingw:提高mingw_unlink()的性能签字人:Jeff Hostetler签字人:Johannes Schindelin

更新mingw_unlink(),首先尝试删除具有现有权限的文件,然后再尝试强制删除。Windows在尝试删除只读文件时引发错误。mingw_unlink()兼容性包装器总是在调用_wunlink()之前尝试_wchmod(666)文件以避免该错误。然而,由于工作树中的大多数文件都是可写的,这通常是浪费精力。更新mingw_unlink(),直接调用DeleteFileW(),如果成功,则返回。如果失败,则返回现有代码路径以更新权限,并使用_wunlink()获取现有错误代码映射。

运行后命令

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

我看到文件已被删除。

在我的情况下,原因是我在当天早些时候以管理员身份运行了Visual Studio。当我去切换分支时,发生了错误。

我使用GitExtensions,我以普通用户的身份运行它,而VS在以管理员身份运行时创建的文件(尽管我还是以管理员身份)无法访问。这是我的根本原因。我不知道为什么会出现这种情况,因为我经常在我的主要开发环境中以管理员的身份运行VS,以前从未遇到过这种问题。但由于某些原因,今天上述场景导致VS在该会话期间生成的任何文件都不可编辑。。。您可以读取它们,但不能更改或删除它们,这正是Git在切换分支时要做的。

为了解决Git的问题,我必须以管理员身份启动windows资源管理器,取得所有权,并重新授予自己对有问题的文件和目录的权限。我不完全理解为什么会这样,因为我也是以管理员的身份运行资源管理器,但它确实做到了。

您可以单独对文件执行此操作,但我最终对分支的根文件夹执行了此操作。

因此,我解决问题的具体步骤是:在windows资源管理器中转到分支的顶部,右键单击目录的财产,选择安全选项卡,高级选项,打开“高级安全设置”对话框,在顶部选择更改所有权(可能会显示您已经拥有所有权),我重新选择了自己。然后它会返回到“高级安全设置”对话框,在底部,请记住选中“替换所有对象…”框然后单击应用系统循环处理每个文件和文件夹的所有权,这为我解决了问题。

对我来说,它锁定了我的迁移文件夹,不允许我切换分支。。。所以我最初只是修复了允许我切换分支的目录和子树,但为了解决这个问题,我关闭了VS。当我重新打开VS时,我没有以管理员身份运行VS,我发现现在无法编译解决方案!这是一个类似的问题。它无法编译解决方案,因为所有obj目录现在都不可编辑。。。因此,当我完成上述步骤时,一切都很好。

希望这对某人有所帮助…;)