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

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个回答

9

我在Windows系统中遇到了这个问题。我关闭了我的IDE(Android Studio),并在git shell中选择了YES。这样做可以解决问题。


9

我能够解决这个问题,方法是以管理员身份打开 Powershell,然后执行以下命令:git checkout <分支名称>


1
谢谢@bar-horing。这帮助我确定它是一个权限问题。一旦我修复了该文件夹的Windows权限,它就可以工作了。 - Kumar
我也是,在Win Server 16上以管理员身份运行cmd :) - geedubb

8
在我的情况下(运行Win8.1,TortoiseGit),锁定文件的进程名为“TortoiseSVN status cache”。
终止该进程后,我能够正常执行“git gc”命令。
上述进程是由TortoiseGit启动的,因此无需手动重新启动它。

4
我曾遇到在/.git/objects/pack文件夹中的.tmp文件问题。我认为在推送或拉取过程中可能出现了故障,因此我删除了这些临时文件,并将HEAD重置为我的最后提交记录。不确定是否建议这样做,但对我有效。另外,git count-objects -v 命令给了我一个不属于pack文件夹的.tmp文件列表。
或者,在Windows中禁止y/n消息,可以打开cmd.exe并运行:git open cmd.exe
SETX GIT_ASK_YESNO false

在此处看到:https://twitter.com/petercamfield/status/494805475733807104

运行 git gc 后,使用 git count-objects -v 命令可以帮助识别 pack 文件夹中剩余的临时对象。 - mistaecko

4

在执行 'git pull' 操作时,我遇到了相同的问题。我尝试使用手动清理 git 命令 'git gc',并解决了我的问题。


4
虽然这是一种答案的尝试,但它并没有提供其他答案没有涵盖到的内容(例如 这个)。如果你正在尝试确认这个解决方案是否有效,或者想要感谢那个回答的作者,请不要发布答案。当你获得更多的声望后,你将获得足够的特权,可以投票赞成你喜欢的答案,这是 Stack Overflow 表示感谢的方式。 - Scott Weldon
Flaggers / reviewers:对于重复的答案,如此之类的,可以进行投票或标记以引起管理员的注意,不要删除! - Scott Weldon

3

对我有用,在Windows上尝试:

停止你的服务器从IDE运行或关闭你的IDE

Intellij / Ecllipse或任何一个,它都可以工作。


3

尝试了各种解决方案后,最终git clean -f帮助了我。

编辑:我遇到了几次这个问题 - 关闭所有依赖于git的进程似乎有所帮助(如gitbash、Eclipse IDE等)。


3
执行命令后,
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

我注意到文件已被删除。

3

我在Windows中遇到了这个问题,你可能需要以管理员身份运行git bash,然后执行所需的命令,这对我解决了这个问题。


3
如果您的操作系统是类Unix/Linux的,您可以运行git gc --force来停止使用git文件的文件处理器,
如果您在Windows上工作,您可以通过任务管理器或进程管理器停止Git进程。似乎有另一个Git进程正在使用您的Git文件。只需终止该Git进程即可。

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