取消链接文件失败

mar*_*rko 166 windows git

我正在尝试做一个git pull我得到以下错误:

取消链接文件'lib/xxx.jar'失败.我应该再试一次吗?(Y/N)

无论我选择y还是n,都无法进入我可以拉或推的状态.

Von*_*onC 202

这通常意味着一个进程仍在使用该特定文件(仍然有一个句柄)
(在Windows上,ProcessExplorer擅长跟踪那种进程)

尝试关闭其他程序,然后再试一次git pull.

请注意,您可以使用GIT_ASK_YESNO变量替代.


2019年1月更新:

这应该更加固定,使用Git 2.21(2019年第一季度),因为" git gc"和" git repack"没有关闭他们在删除之前发现不需要的打开包文件,这在无法删除打开文件的平台上无效.
这已得到纠正.

Johannes Schindelin()提交5bdece0(2018年12月15日).(由Junio C Hamano合并- -提交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,Q3 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
Run Code Online (Sandbox Code Playgroud)

git 2.8.4(2016年6月)确实提到了问题755,它也应该缓解这个问题(提交2db0641):

确保子进程不继承临时文件句柄


实际上,上面提到的git-for-windows500问题实际上是用Git 2.19,Q3 2018修复的.
参见" Git - 文件的取消链接.idx.pack失败(该文件唯一拥有的进程句柄git.exe) "

  • 我发现Windows资源管理器是罪魁祸首.这很可能是因为TortoiseGit的图标叠加或TGitCache.关闭所有打开的文件夹就可以了,但是如果打开文件夹,你可能只需要关闭项目文件夹. (6认同)
  • 很可能是使用该jar文件运行的JVM. (5认同)
  • 在我的情况下,它是VS2013,因为它绑定到开放的解决方案. (4认同)
  • 就我而言,它是Skype.我之前将文件转发给其他人,有些还没有接受或取消. (2认同)
  • Explorer.exe是我的问题 - 我没有TortoiseGit.我从任务管理器中杀死了explorer.exe并使用CTRL-ALT-DELETE =>任务管理器=>文件=>运行新任务=>"explorer.exe"(不带引号)生成一个新的 (2认同)
  • 在这里提出了一个非常旧的线程,但是从上面的问题链接中,通过调用`git gc`强制GC再次尝试拉取之前有一个临时的解决方法.对于coursse来说,它的开箱即用更新.只是说.:) (2认同)

Nei*_*ilD 56

这是一个Windows特定的答案,所以我知道它与你无关......我只是为了未来的搜索者的利益而包含它.

在我的情况下,这是因为我从一个非提升的命令行运行Git."以管理员身份运行"为我修复了它.

  • 我在执行拉动时在Windows 7上遇到此问题,而git执行了自动打包.它抱怨"idx"文件.然后我打开一个控制台窗口作为管理员并运行git gc,没有问题.所以这是一个很好的解决方案. (4认同)
  • 哇.谢谢NeilD.它也为我修好了.将GIT移植到Windows上会更好. (2认同)

Pau*_*icz 26

对我来说,这是因为Visual Studio试图从拉动中重新加载所有已更改的文件.让visual studio刷新,然后运行git gc.

  • `git gc`似乎对我也有用 (4认同)
  • 对我来说也差不多 在运行git gc之前需要关闭Eclipse. (3认同)

Gar*_*ith 5

在使用GitHub for Windows的Windows上,运行时shell中出现类似错误git gc:

Unlink of file '.git/objects/pack/pack-0b40ae7eae9b83edac62e19c07ff7b4c175244f6.idx' failed. Should I try again? (y/n)
Run Code Online (Sandbox Code Playgroud)

我通过关闭GitHub GUI解决了这个问题.