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

问题描述 投票:456回答:31

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

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

这意味着什么?

git unlink
31个回答
599
投票

这可能意味着另一个程序正在使用该文件,这会阻止git在您尝试更改分支时将文件“移动”到工作目录中或从工作目录中移出。

我在Windows Vista上发生过这种情况,其中eclipse是“使用”该文件的程序。该文件可能实际上并未在eclipse中打开,但可能已由eclipse运行的进程打开。

在这种情况下,请尝试在可能已使用它的任何应用程序中关闭该文件。如果这不起作用,请完全退出可能已打开文件的任何应用程序。


5
投票

在Windows 8上:我运行git gc并且它说git gc已经运行了,我运行了git gc --force并且垃圾收集器运行了。

然后我可以切换分支并合并没有任何问题,尝试git gc --force。

也许gc过程并没有因为某种原因而优雅地停止。


4
投票

我在Windows 7上遇到过这种问题,结果是由于某些孤立的git.exe进程。

要解决此问题,请打开任务管理器并终止所有git.exe进程。

由于git命令是短暂的,你通常不应该在任务管理器中看到任何git.exe。当他们在那里时,通常意味着某些事情是错误的,你应该杀死那些进程。


4
投票

我在Windows中遇到了这个问题。我关闭了我的IDE(Android Studio)并在git shell中选择了YES。有效。


4
投票

我在.tmp文件夹中使用/.git/objects/pack文件时出现此问题。我认为在推或拉期间出现了一些问题,所以我删除了这些临时文件并将HEAD重置为我上一次提交。不确定是否这是建议但它对我有用。另外git count-objects -v给了我一个不属于pack文件夹的.tmp文件列表。

或者在windows git open cmd.exe中禁止y / n消息并运行:

SETX GIT_ASK_YESNO false

在这里看到:https://twitter.com/petercamfield/status/494805475733807104


4
投票

在做'git pull'时我遇到了同样的问题。我尝试了手动管家git命令'git gc',它解决了我的问题。


3
投票

我能够通过打开Powershell作为管理员并从那里git checkout <branch_name>来解决这个问题


2
投票

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

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


1
投票

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

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


1
投票

我遇到了同时运行git Bash和Eclipse EGit的这个问题。解决方案:关闭Eclipse。运行git gc也不会伤害@khilo提到的。


1
投票

在上述答案似乎都没有奏效之后,运行git fetch -p为我完成了这项工作。

https://git-scm.com/docs/git-fetch


240
投票

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


1
投票

我在Windows中遇到过这个问题,您可能希望以管理员身份运行git bash,然后执行欲望命令,这样就解决了我的问题。


1
投票

如上所述,其他东西正在保存文件。事情是,程序看起来并不怀疑我们。我试图从控制台做一个git pull,同时打开GitKraken。关闭GitKraken解决了这个问题。


1
投票

运行命令后

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

我看到文件已被删除。


1
投票

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


1
投票

我尝试了这个页面上的每一个提示,没有任何帮助。我正在做一个git fetch和一个git reset --hard origin/development给了我unkink错误。我无法重置为最新提交。

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


0
投票

在Windows上,在(相当大的)repo的git clone上看到了这个错误。关闭SmartGit并暂停我的备份软件(CrashPlan),之后就可以了。不知道这两个中的哪一个做了这个伎俩,但如果要么运行,这也可能适合你。


0
投票

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


0
投票

我有同样的错误,关闭了打开文件的应用程序解决了它。我能够回去按“Y”


0
投票

在我的情况下,有一个复制或替换窗口打开该特定文件,因此unlink错误。我关闭它,没有unlink错误


0
投票

如果关闭IDE并运行此处列出的各种git命令将无济于事,请尝试手动终止所有正在运行的Java进程。我有一个Java进程可能从eclipse遗留下来,不知何故保持配置文件打开。


69
投票

来自here的这个解决方案为我工作:

这是一个Windows特定的答案,所以我知道它与你无关......我只是为了未来的搜索者的利益而包含它。

在我的情况下,这是因为我从一个非提升的命令行运行Git。 “以管理员身份运行”为我修复了它。


0
投票

如果您正在使用Docker并运行Windows 10,则可能需要停止运行该文件的容器。要显示容器的状态,请运行

docker ps -a

要阻止它们,只需运行即可

docker stop <container name or container id>

当我使用.sh文件运行本地文件时,这对我有用


33
投票

我在做git pull时遇到了这个问题。

我尝试了git gc,它解决了我的问题。


15
投票

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

git config --global core.longpaths true

或尝试设置是/否答案标志,如果它没有冲突

set GIT_ASK_YESNO=false

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


8
投票

在我的情况下(Win8.1,运行TortoiseGit),正在锁定文件的过程称为“TortoiseSVN状态缓存”。

杀死它让我可以运行“git gc”而不会出现任何问题。上面的过程由TortoiseGit启动,因此无需手动重启。


8
投票

这可能对某人有用;如果以上所有内容都不适合您,请按照下列步骤操作:

  1. 关闭你的IDE(我的是Eclipse,不确定它是否适用于Intellij和其他人)或任何其他可能正在使用git的应用程序。
  2. 从命令行打开git(在我的情况下,我有git bash)并运行其他人提到的git gc

这对我来说是神奇的。


7
投票

当我使用gitkraken和命令提示符时,我遇到了同样的问题。然后我运行git gc命令它解决了我的问题。所以我很高兴并希望分享一些可能有用的要点。

什么git gc会做什么?

git gc删除了无法访问的对象,这些对象可能是从之前的git add调用中创建的。

什么时候运行git gc

doc,鼓励用户定期在每个存储库中运行此任务,以保持良好的磁盘空间利用率和良好的运行性能。

如何使其自动配置?

一些git命令可以自动运行git gc;有关详细信息,请参阅下面的--auto标志。如果您知道自己正在做什么,并且您想要的是永久禁用此行为而无需进一步考虑,那就行了

git config --global gc.auto 0

7
投票

我尝试了git gc,它解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.