我的本地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)
那可能意味着什么?
这可能意味着另一个程序正在使用文件,这会阻止 git 在您尝试更改分支时将文件“移动”到或从工作目录中。
我曾经在 Windows Vista 上遇到过这种情况,其中 Eclipse 是“使用”该文件的程序。该文件可能并未在 Eclipse 中打开,但可能已被由 Eclipse 运行的进程打开。
在这种情况下,请尝试关闭任何可能使用该文件的应用程序。如果这不起作用,请完全退出可能已打开该文件的所有应用程序。
GitKraken
进行一些操作,比如变基(rebase),可能会遇到这种情况。 - mtpultz我之前遇到了这个问题,通过执行指令:git gc
来解决。
上述指令可以移除临时和无用的文件。(垃圾回收器)
git pull
命令会自动触发 git gc
,而 gc
会尝试访问一些 .pack
和 .inx
文件。这些文件被拥有 git pull
命令的“Windows git”进程所占用。手动运行 git gc
,然后再运行 git pull
真正解决了这个问题。 - Nikitagit gc
时,在 gc
进行中又遇到了同样的错误。 - Prakash K我从这里得到的解决方案对我有用:
这是一个针对Windows的答案,所以我知道它与你无关...我只是为了未来的搜索者而包含它。
在我的情况下,是因为我从非提升的命令行中运行Git。 "以管理员身份运行"对我有帮助。
Ctrl+C
终止无法链接的很长的文件列表;退出了GitBash、我的IDE和GitHub Windows应用程序;以管理员权限重新启动GitBash;并运行 git gc --aggressive
。虽然花费了一些时间才完成,但是没有出现任何错误。 - Mark McClelland在执行 git pull
时,我遇到了这个问题。
我尝试过执行 git gc
,并解决了我的问题。
在我的情况下,没有任何进程接触到该文件或目录。也许是因为路径太长而导致的,这是操作系统的限制(Windows)。请尝试按照以下指示在全局 Git 配置中启用 longpath 支持标志:
git config --global core.longpaths true
或者尝试设置是否答案为是/否的标志,如果对您没有冲突的话。
set GIT_ASK_YESNO=false
如果路径太长,我还没有找到成功的解决方案。
GIT_ASK_YESNO
,找不到关于它的信息。它来自哪里? - majkinetorcore.longpaths
加上以下内容:reset --hard
prune
gc对我有用 - 但必须关闭 AndroidStudio,以免与其内置工具冲突。 - bovquier如果你尝试了上述方法却无效,可以尝试以下步骤:
关闭你的IDE(我的是Eclipse,不确定Intellij和其他IDE是否适用)或其他可能正在使用Git的应用程序。
在命令行中打开 Git(我使用的是 Git Bash),并执行其他人提到的 git gc
命令。
对我来说这个方法很有效。
由于我使用了GitKraken和命令提示符,我遇到了同样的问题。然后我运行了git gc
命令解决了我的问题。所以我很高兴并想分享一些有用的信息。
git gc
会做什么?
git gc
将删除可能是从之前的git add调用中创建的无法访问的对象。
何时运行git gc
?
根据文档,建议用户在每个仓库内定期运行此任务,以维护良好的磁盘空间利用率和良好的操作性能。
如何使其自动配置?
一些git命令可以自动运行git gc; 有关详细信息,请参见下面的--auto标志。如果您知道自己在做什么,只想永久禁用此行为而不需要进一步考虑,请执行以下操作:
git config --global gc.auto 0
git gc
,现在一切似乎恢复正常了。 - JWess我在Windows 7上遇到过这种问题,后来发现是因为一些孤立的git.exe进程导致的。
要解决这个问题,请打开任务管理器并终止所有git.exe进程。
由于git命令的生命周期很短,通常情况下不会在任务管理器中看到任何git.exe。当它们出现时,通常意味着出了点问题,你应该终止这些进程。
我尝试了git gc
,并解决了我的问题。
git gc
命令,但它显示 git gc
已在运行。然后我运行了 git gc --force
命令,垃圾回收器就可以正常运行了。
接着,我可以切换分支并进行合并,而不会出现任何问题,请尝试使用 git gc --force
命令。
也许由于某种原因,gc
进程没有正常停止。