我的本地git存储库中的一个文件出现了问题。当我试图更改分支时,它说:
Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n)
这意味着什么?
答案 0 :(得分:587)
这可能意味着另一个程序正在使用该文件,这会阻止git在您尝试更改分支时将文件“移动”到工作目录中或从工作目录中移出。
我在Windows Vista上遇到过这种情况,其中eclipse是“使用”该文件的程序。该文件可能实际上并未在eclipse中打开,但可能已由eclipse运行的进程打开。
在这种情况下,请尝试在可能已使用它的任何应用程序中关闭该文件。如果这不起作用,请完全退出可能已打开文件的任何应用程序。
答案 1 :(得分:239)
我遇到了这个问题并通过命令解决了它:git gc
以上命令删除临时文件和不必要的文件。 (垃圾收集器。)
答案 2 :(得分:69)
来自here的此解决方案为我工作:
这是Windows特定的答案,所以我知道它与您无关......我只是为了未来的搜索者的利益而包含它。
在我的情况下,这是因为我从一个非提升的命令行运行Git。 “以管理员身份运行”为我修好了。
答案 3 :(得分:32)
我在执行git pull
时遇到了这个问题。
我尝试git gc
并解决了我的问题。
答案 4 :(得分:14)
在我的情况下,没有任何进程触及文件或目录。如果路径很长,可能会发生这种情况,因为操作系统限制(窗口)。尝试在全局git配置中启用longpath支持标志,如下所示:
git config --global core.longpaths true
或尝试设置是/否答案标志(如果它没有冲突)
set GIT_ASK_YESNO=false
如果路径太长,我找不到成功的解决方案。
答案 5 :(得分:8)
在我的情况下(Win8.1,运行TortoiseGit),这是一个名为" TortoiseSVN status cache"那是锁定文件。
杀了它让我跑了#34; git gc"没有任何问题。 上面的过程由TortoiseGit启动,因此无需手动重启。
答案 6 :(得分:7)
我尝试了git gc
,它解决了我的问题。
答案 7 :(得分:7)
当我使用gitkraken和命令提示符时,我遇到了同样的问题。然后我运行git gc
命令解决了我的问题。所以我很高兴并希望分享一些可能有用的要点。
git gc
会做什么?
git gc
删除可能是从之前的git add调用中创建的无法访问的对象。
何时运行git gc
?
从doc开始,鼓励用户定期在每个存储库中运行此任务,以保持良好的磁盘空间利用率和良好的运行性能。
如何让它自动配置?
某些git命令可能会自动运行git gc;有关详细信息,请参阅下面的--auto标志。如果您知道自己在做什么,并且想要永久禁用此行为而无需进一步考虑,请执行
git config --global gc.auto 0
答案 8 :(得分:7)
这可能对某些人有用;如果以上所有方法都不适合您,请按照以下步骤操作:
关闭你的IDE(我的是Eclipse,不确定它是否适用于Intellij和其他人)或任何其他可能使用git的应用程序。
从命令行打开git(在我的情况下,我有git bash)并按其他人的说法运行git gc
。
这对我来说是神奇的。
答案 9 :(得分:5)
在Windows 8上: 我运行了git gc,它说git gc已经运行了,我运行了git gc --force并且垃圾收集器运行了。
然后我可以切换分支并合并而没有任何问题,请尝试使用git gc --force。
也许gc进程并没有因为某种原因而优雅地停止。
答案 10 :(得分:4)
我在做git pull'时遇到了同样的问题。我试过手动管家git命令' git gc'它解决了我的问题。
答案 11 :(得分:4)
我在Windows中遇到了这个问题。我关闭了我的IDE(Android Studio)并在git shell中选择了YES。它奏效了。
答案 12 :(得分:4)
我在Windows 7上遇到过这种问题,结果是由于某些孤立的git.exe
进程。
要解决此问题,请打开任务管理器并终止所有git.exe
进程。
由于git
命令是短暂的,因此您通常不会在任务管理器中看到任何git.exe
。当他们在那里时,通常意味着某些事情是错误的,你应该杀死这些过程。
答案 13 :(得分: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
答案 14 :(得分:3)
我能够通过以管理员身份打开Powershell 并从那里解决此问题
git checkout <branch_name>
答案 15 :(得分:2)
在尝试各种解决方案后,git clean -f
帮助了我。
答案 16 :(得分:1)
我在Windows中遇到过这个问题,您可能希望以管理员身份运行git bash,然后执行欲望命令,为我解决了这个问题。
答案 17 :(得分:1)
为我工作,在Windows上尝试过
从IDE停止服务器运行或关闭IDE
Intellij / Ecllipse或任何它都可以使用。
答案 18 :(得分:1)
我尝试了此页面上的所有提示,但没有任何帮助。我正在做一个git fetch
,而一个git reset --hard origin/development
给了我一个未知的错误。我无法重置为最新提交。
帮忙的是签出另一个分支,然后签出上一个分支。很奇怪,但是它解决了问题。
答案 19 :(得分:1)
这可能是一个单独的gitk窗口,用于查看一些git历史记录。
关闭该窗口以解决该问题。
答案 20 :(得分:1)
如果您正在开发Web应用程序,常见的原因是忘记关闭服务器。例如,这可能是一个简单的Node.js进程,或者在Windows上,您的IIS进程作为后台进程运行时更加不引人注目。
答案 21 :(得分: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
我看到文件已被删除。
答案 22 :(得分:1)
我遇到了同时运行git Bash和Eclipse EGit的问题。
解决方案:关闭Eclipse。运行git gc
也不会像@khilo提到的那样受伤。
答案 23 :(得分:1)
如上所述,其他东西正在保存文件。事情是,程序看起来并不怀疑我们。 我试图从控制台做一个git pull,同时打开GitKraken。关闭GitKraken解决了这个问题。
答案 24 :(得分:1)
上述答案似乎都没有效果,运行git fetch -p
为我完成了这项工作。
答案 25 :(得分:0)
如上述答案所述,yes文件可能必须由其他java进程使用,摆脱这种麻烦的简单方法是,只需杀死所有java进程,然后执行taskkill /F /IM java.exe
我就这样做了,我。
对于Windows,请杀死所有Java进程:
kill -9 `pidof java`
对于Linux,请杀死所有Java进程:
{
datafield : "report",
text : "Show report",
accessor : "link",
Cell : (e) => <a href={e.value}> {e.value} </a>
},
答案 26 :(得分:0)
您可能会在Git 2.29(2020年第四季度)上看到较少的错误:MinGW上的“ unlink”仿真已得到优化。
请参见commit 680e0b4的Jeff Hostetler (Jeff-Hostetler
)(2020年8月17日)。
(由Junio C Hamano -- gitster
--在commit 5a04826中合并,2020年8月19日)
mingw
:提高mingw_unlink()
的性能签名人:Jeff Hostetler
签名人:Johannes Schindelin
更新
mingw_unlink()
,首先尝试删除具有现有权限的文件,然后再强制执行该文件。Windows尝试删除只读文件时引发错误。
mingw_unlink()
兼容性包装程序始终尝试在调用_wchmod(
之前尝试_wunlink()
666)文件,以避免该错误。
但是,由于工作树中的大多数文件已经可写,因此通常会浪费精力。将
mingw_unlink()
更新为直接调用DeleteFileW()
,如果成功则返回。
如果失败,请退回到现有的代码路径以更新权限,并使用_wunlink()
获取现有的错误代码映射。
答案 27 :(得分:0)
我通过以管理员身份重新启动PHPStorm(改为插入程序)解决了此问题
答案 28 :(得分:0)
对我来说,我必须进入我的 .git 文件夹并删除 index.lock 文件。 之后,我可以像往常一样撤消。
答案 29 :(得分:0)
在我的情况下,原因是我当天早些时候以管理员身份运行Visual Studio。当我转到分支机构时,发生了错误。
我使用GitExtensions,我以常规用户身份运行它,并且以VS身份以管理员身份运行时创建的文件(以Administrator身份运行,但仍由我运行)无法访问。这是我的根源。我不确定在这种情况下为什么会发生这种情况,因为我经常在主要开发环境中以管理员身份运行VS,并且之前从未遇到过此问题。但是由于今天的某种原因,上述情况导致VS在该会话期间生成的任何文件都无法编辑...您可以读取它们,但不能更改或删除它们,而这正是Git在切换分支时要做的。
要解决Git的问题,我必须以管理员身份启动Windows资源管理器,并拥有所有权并重新赋予我有关问题文件和目录的权限。我还不完全理解为什么也要以管理员身份运行资源管理器,但是确实如此。
您可以分别对文件执行此操作,但是我最终对分支的根文件夹执行了此过程。
所以我要解决此问题的确切步骤是: 在Windows资源管理器中转到了分支的顶部, 右键单击目录的属性, 选择安全标签, 高级选项可打开“高级安全设置”对话框, 在顶部选择更改所有权(它可能表明您已经拥有它), 我重新选择了自己。 然后返回到“高级安全设置”对话框,请记住要选中“替换所有对象...”框的底部。 然后点击应用 系统遍历每个文件和文件夹的所有权,这为我解决了这个问题。
对我来说,它已经锁定了我的迁移文件夹,并且不允许我切换分支...所以我最初只是修复了允许我切换分支的目录和子树,但是我关闭了VS试图解决此问题。当我重新打开VS时,我没有以管理员身份运行VS,发现现在无法编译该解决方案!这是相同\相似的问题。它无法编译解决方案,因为所有obj目录现在都不可编辑...因此,当我执行上述步骤时,一切都变好了。
希望这可以帮助某人...;)
答案 30 :(得分:0)
对于我的Spring Boot项目,尝试运行git stash
时遇到了这个错误。
解决方案是杀死计算机上运行的所有Java进程。
答案 31 :(得分:0)
做
为我工作
答案 32 :(得分:0)
如果您正在使用Docker并运行Windows 10,则可能要停止文件所在的容器。要显示容器的状态,请运行
docker ps -a
要阻止它们,只需运行
docker stop <container name or container id>
这对我有用,因为我正在使用.sh文件运行本地文件
答案 33 :(得分:0)
如果关闭IDE并运行此处列出的各种git命令无济于事,请尝试手动杀死所有正在运行的Java进程。我有一个Eclipse遗留下来的Java进程,以某种方式使配置文件保持打开状态。
答案 34 :(得分:0)
有一个用于打开该特定文件的复制或替换窗口,因此出现了取消链接错误。我关闭了它,没有解除链接错误
答案 35 :(得分:0)
我遇到了同样的错误并关闭了打开文件的应用程序解决了它。我能够回去按下&#34; Y&#34;
答案 36 :(得分:0)
我在执行git pull时遇到了同样的问题,如上所述,这是因为一个程序持有这些文件并且不允许git pull。关闭该计划有所帮助。通常,签入文件的IDE(如Eclipse)将在后台保存它。关闭相同并重新运行的git pull解决了我的问题。
答案 37 :(得分:0)
在Windows上,在一个(相当大的)repo的git clone
上看到了这个错误。已关闭SmartGit并暂停了我的备份软件(CrashPlan),之后就可以了。不确定这两个中的哪一个做了伎俩,但如果要么运行,这也可以为你做。