我的本地git存储库中的文件之一发生了问题。当我尝试更改分支时,它说:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
那是什么意思?
我的本地git存储库中的文件之一发生了问题。当我尝试更改分支时,它说:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
那是什么意思?
Answers:
这可能意味着另一个程序正在使用该文件,这将阻止git在尝试更改分支时将文件“移动”到工作目录中或从工作目录中移出。
我曾经在Windows Vista上发生过这种情况,其中eclipse是“使用”文件的程序。该文件可能实际上未在eclipse中打开,但可能已由eclipse运行的进程打开。
在这种情况下,请尝试在可能已使用该文件的任何应用程序中关闭该文件。如果这不起作用,请完全退出所有可能已打开文件的应用程序。
GitKraken
命令,例如重新设置,则可能会收到此消息
我遇到了这个问题,并通过以下命令解决了该问题:git gc
上面的命令删除了临时文件和不必要的文件。(垃圾收集器。)
git pull
git gc
自动启动,并且gc尝试访问一些.pack和.inx文件。这些由拥有git pull
命令的“ windows git”进程持有。git gc
手动运行,然后- git pull
确实解决了问题。
git gc
,我再次得到了同样的错误时gc
正在进行
从该解决方案在这里为我工作:
这是Windows的特定答案,因此我知道它与您无关...我只是为了将来的搜索者而包括了它。
就我而言,这是因为我是从非提升命令行运行Git的。“以管理员身份运行”为我修复了该问题。
Ctrl+C
以终止很长的不可链接文件列表;退出gitbash,我的IDE和GitHub Windows应用程序;以提升的“以管理员身份运行”模式重启gitbash;然后跑了git gc --aggressive
。花了一段时间才能完成,但没有出错。
就我而言,没有任何进程可以处理文件或目录。如果路径很长,可能是由于操作系统限制(Windows)而发生的。尝试如下所示在全局git配置中启用longpath支持标志:
git config --global core.longpaths true
或尝试设置是/否答案标志(如果它对您没有冲突)
set GIT_ASK_YESNO=false
如果路径太长,则找不到成功的解决方案。
GIT_ASK_YESNO
,找不到有关此信息。它从何而来 ?
core.longpaths
附加功能:重置--hard prune gc对我
我尝试了一下git gc
,它解决了我的问题。
当我使用gitkraken和命令提示符时,我遇到了同样的问题。然后我运行 git gc
命令它解决了我的问题。所以我很高兴,并希望分享一些可能有用的观点。
怎么git gc
办?
git gc
删除可能由先前的git add调用创建的无法访问的对象。
什么时候运行git gc
?
从doc开始,鼓励用户在每个存储库中定期运行此任务,以保持良好的磁盘空间利用率和良好的运行性能。
如何使其可自动配置?
一些git命令可能会自动运行git gc;有关详细信息,请参见下面的--auto标志。如果您知道自己在做什么,并且想要做的就是永久禁用此行为而无需进一步考虑,请执行
git config --global gc.auto 0
在Windows 8上:我运行了git gc,并说git gc已经在运行,我运行了git gc --force,并且运行了垃圾收集器。
然后,我可以切换分支并合并而没有任何问题,请尝试git gc --force。
也许gc进程由于某种原因没有正常停止。
我的.tmp
文件/.git/objects/pack
夹中的文件存在此问题。我认为在推或拉过程中发生了某些故障,因此我删除了这些临时文件并将HEAD重置为我的最后一次提交。不知道是否建议这样做,但对我有用。也git count-objects -v
给了我的列表.tmp
未在包文件夹属于文件。
或者在窗口中取消显示y / n消息git open cmd.exe
并运行:
SETX GIT_ASK_YESNO false
在这里看到:https : //twitter.com/petercamfield/status/494805475733807104
git gc
,git count-objects -v
有助于识别pack
文件夹中剩余的临时对象。
我在做“ git pull”时也遇到了同样的问题。我尝试了手动整理git命令'git gc',它解决了我的问题。
运行后命令
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
我看到文件已被删除。
在上述答案均无效后,跑步git fetch -p
对我来说确实有效。
在Windows上git clone
,在(相当大的)存储库中看到此错误。关闭SmartGit并暂停我的备份软件(CrashPlan),然后运行。不确定2个中的哪个成功了,但是如果运行其中一个,这也可能为您完成。
进行git pull时,我遇到了同样的问题,如上所述,这是因为程序保留了这些文件并且不允许进行git pull。结束程序很有帮助。通常,从中检入文件的IDE(如Eclipse)会将其保留在后台。关闭相同的文件并重新运行git pull可以为我解决问题。