我正在尝试进行git pull并收到以下错误:
文件'lib / xxx.jar'的取消链接失败。我应该再试一次吗?(是/否)
无论我选择y还是n,都无法进入可以拉动或推动的状态。
chmod
和/或chown
在所述文件上运行。
我正在尝试进行git pull并收到以下错误:
文件'lib / xxx.jar'的取消链接失败。我应该再试一次吗?(是/否)
无论我选择y还是n,都无法进入可以拉动或推动的状态。
chmod
和/或chown
在所述文件上运行。
Answers:
这通常意味着某个进程仍在使用该特定文件(仍然具有该文件的句柄)
(在Windows上,ProcessExplorer
擅长跟踪此类进程)
尝试关闭其他程序,然后重试git pull
。
请注意,您可以使用GIT_ASK_YESNO
变量作为替代。
2019年1月更新:
在Git 2.21(2019年第一季度)中,这应该更加固定,因为“ git gc
”和“ git repack
”在删除它们之前并没有关闭它们不需要的打开包文件,而这些文件在无法删除打开文件的平台上不起作用。
这已得到纠正。
参见Johannes Schindelin()的commit 5bdece0(2018年12月15日)。(通过合并JUNIOÇ滨野- -在提交5104f8f,2019年1月18日)dscho
gitster
gc
/repack
:在需要时发布包在Windows上,如果某个进程仍保留着句柄,则无法删除或重命名文件。
为了解决这个问题,我们引入了该close_all_packs()
功能。早些时候,我们确保在生成包之前
git gc
就释放它们,以防万一gc
想要删除不再需要的包。但是该开发人员忘记了
gc
本身也需要放开包装,例如,通过--aggressive
选件合并所有包装时。同样,
git repack -d
要删除过时的包,因此也需要关闭所有包句柄。
2016年1月更新
这应该在Git 2.8(2016年3月)中修复(请参见下面的Git 2.19,2018年第三季度)
请参阅Johannes Schindelin()的提交d562102,提交dcacb1b,提交df617b5,提交0898c96(2016年1月13日)。(由Junio C Hamano合并--在3c80940号提交中,2016年1月26日)dscho
gitster
fetch
:在垃圾回收之前释放包文件在自动gc'ing之前,我们需要确保已释放打包文件,以防它们需要重新打包和垃圾回收。
许多
gc --auto
在退出之前运行“ ”的代码路径保持映射的包文件并使文件描述符保持打开状态,这对于无法删除已打开文件的系统而言并不友好。
现在,他们在这样做之前关闭了包装。
可以解决git-for-widows
问题500。
查看用于验证该新方法的测试,可能的解决方法(因为Git 2.8尚未发布)将是人为提出的gc.autoPackLimit
。
git config gc.autoPackLimit 10000
git fetch
git config gc.autoPackLimit 50 # default value
git 2.8.4(2016年6月)确实提到了第755期,这也应该缓解该问题(commit 2db0641):
确保临时文件句柄不被子进程继承
其实,git-for-windows
问题500上述真是固定使用Git 2.19,2018年第三季度
请参阅“ 混帐-文件取消链接.idx
和.pack
失败的(唯一的进程所拥有的句柄此文件git.exe
) ”
这是Windows的特定答案,因此我知道它与您无关...我只是为了将来的搜索者而包括它。
就我而言,这是因为我是从非提升命令行运行Git的。“以管理员身份运行”为我修复了该问题。
尝试重新启动Apache或其他Web服务器,因为它可能已锁定了某些文件。
关闭您的IDE,然后执行git pull
。会的。
在我的情况下,这是由LESS编译器SimpLESS引起的。您必须在系统托盘中将其关闭。
上面的答案都不对我有用,但是我使用force选项运行git gc命令,它解决了我的情况。
'git gc --force'
[Windows 7,以管理员身份运行=>命令提示符]
尝试在管理模式下运行命令行编辑器并运行命令。它可以帮助解决问题。:)