我本地git存储库中的一个文件出现了问题。当我试图更改分支时,它说:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
这意味着什么?
这可能意味着另一个程序正在使用该文件,这会阻止git在您尝试更改分支时将文件“移动”到工作目录中或从工作目录中移出。
我在Windows Vista上发生过这种情况,其中eclipse是“使用”该文件的程序。该文件可能实际上并未在eclipse中打开,但可能已由eclipse运行的进程打开。
在这种情况下,请尝试在可能已使用它的任何应用程序中关闭该文件。如果这不起作用,请完全退出可能已打开文件的任何应用程序。
在Windows 8上:我运行git gc并且它说git gc已经运行了,我运行了git gc --force并且垃圾收集器运行了。
然后我可以切换分支并合并没有任何问题,尝试git gc --force。
也许gc过程并没有因为某种原因而优雅地停止。
我在Windows 7上遇到过这种问题,结果是由于某些孤立的git.exe
进程。
要解决此问题,请打开任务管理器并终止所有git.exe
进程。
由于git
命令是短暂的,你通常不应该在任务管理器中看到任何git.exe
。当他们在那里时,通常意味着某些事情是错误的,你应该杀死那些进程。
我在Windows中遇到了这个问题。我关闭了我的IDE(Android Studio)并在git shell中选择了YES。有效。
我在.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
在做'git pull'时我遇到了同样的问题。我尝试了手动管家git命令'git gc',它解决了我的问题。
我能够通过打开Powershell作为管理员并从那里git checkout <branch_name>
来解决这个问题
经过尝试各种解决方案后,git clean -f
帮助了我。
编辑:我再次遇到问题几次 - 关闭所有依赖于git的进程似乎有所帮助(如gitbash,Eclipse IDE等)
这可能是一个单独的gitk窗口,用于查看一些git历史记录。
只需关闭该窗口即可解决该问题。
我遇到了同时运行git Bash和Eclipse EGit的这个问题。解决方案:关闭Eclipse。运行git gc
也不会伤害@khilo提到的。
在上述答案似乎都没有奏效之后,运行git fetch -p
为我完成了这项工作。
我有这个问题并通过命令解决了它:git gc
上面的命令删除了临时文件和不必要的文件。 (垃圾收集器。)
我在Windows中遇到过这个问题,您可能希望以管理员身份运行git bash,然后执行欲望命令,这样就解决了我的问题。
如上所述,其他东西正在保存文件。事情是,程序看起来并不怀疑我们。我试图从控制台做一个git pull,同时打开GitKraken。关闭GitKraken解决了这个问题。
运行命令后
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
我看到文件已被删除。
如果您正在开发Web应用程序,常见的原因是忘记关闭服务器。例如,这可能是一个简单的Node.js进程,或者在Windows上,您的IIS进程作为后台进程运行时更加不引人注目。
我尝试了这个页面上的每一个提示,没有任何帮助。我正在做一个git fetch
和一个git reset --hard origin/development
给了我unkink错误。我无法重置为最新提交。
有什么帮助是检查另一个分支,然后检查以前的分支。很奇怪,但它解决了这个问题。
在Windows上,在(相当大的)repo的git clone
上看到了这个错误。关闭SmartGit并暂停我的备份软件(CrashPlan),之后就可以了。不知道这两个中的哪一个做了这个伎俩,但如果要么运行,这也可能适合你。
我在执行git pull时遇到了同样的问题,如上所述,这是因为一个程序持有这些文件并且不允许git pull。关闭该计划有所帮助。通常,签入文件的IDE(如Eclipse)将在后台保存它。关闭相同并重新运行git pull解决了我的问题。
我有同样的错误,关闭了打开文件的应用程序解决了它。我能够回去按“Y”
在我的情况下,有一个复制或替换窗口打开该特定文件,因此unlink错误。我关闭它,没有unlink错误
如果关闭IDE并运行此处列出的各种git命令将无济于事,请尝试手动终止所有正在运行的Java进程。我有一个Java进程可能从eclipse遗留下来,不知何故保持配置文件打开。
来自here的这个解决方案为我工作:
这是一个Windows特定的答案,所以我知道它与你无关......我只是为了未来的搜索者的利益而包含它。
在我的情况下,这是因为我从一个非提升的命令行运行Git。 “以管理员身份运行”为我修复了它。
如果您正在使用Docker并运行Windows 10,则可能需要停止运行该文件的容器。要显示容器的状态,请运行
docker ps -a
要阻止它们,只需运行即可
docker stop <container name or container id>
当我使用.sh文件运行本地文件时,这对我有用
我在做git pull
时遇到了这个问题。
我尝试了git gc
,它解决了我的问题。
在我的情况下,没有任何进程触及文件或目录。如果路径很长,可能会发生这种情况,因为操作系统限制(窗口)。尝试在全局git配置中启用longpath支持标志,如下所示:
git config --global core.longpaths true
或尝试设置是/否答案标志,如果它没有冲突
set GIT_ASK_YESNO=false
如果路径太长,我找不到成功的解决方案。
在我的情况下(Win8.1,运行TortoiseGit),正在锁定文件的过程称为“TortoiseSVN状态缓存”。
杀死它让我可以运行“git gc”而不会出现任何问题。上面的过程由TortoiseGit启动,因此无需手动重启。
这可能对某人有用;如果以上所有内容都不适合您,请按照下列步骤操作:
git gc
。这对我来说是神奇的。
当我使用gitkraken和命令提示符时,我遇到了同样的问题。然后我运行git gc
命令它解决了我的问题。所以我很高兴并希望分享一些可能有用的要点。
什么git gc
会做什么?
git gc
删除了无法访问的对象,这些对象可能是从之前的git add调用中创建的。
什么时候运行git gc
?
从doc,鼓励用户定期在每个存储库中运行此任务,以保持良好的磁盘空间利用率和良好的运行性能。
如何使其自动配置?
一些git命令可以自动运行git gc;有关详细信息,请参阅下面的--auto标志。如果您知道自己正在做什么,并且您想要的是永久禁用此行为而无需进一步考虑,那就行了
git config --global gc.auto 0
我尝试了git gc
,它解决了我的问题。