git gc错误:无法运行重新包装

ygo*_*goe 35 git garbage-collection

我只是git gc在我的本地存储库上运行以进行定期清理.今天是第一次,它失败了.这就是我所做的:( Windows 7)

C:\Source\TxTranslation>git gc
Counting objects: 880, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (540/540), done.
Writing objects: 100% (880/880), done.
Total 880 (delta 504), reused 589 (delta 333)
rm: cannot unlink `pack-18179305b5b5dbdaf059e4ded50b736ab93e220c.pack': Permission denied

C:\Source\TxTranslation>git gc
Counting objects: 880, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (369/369), done.
Writing objects: 100% (880/880), done.
Total 880 (delta 504), reused 880 (delta 504)
mv: cannot move `/c/Source/TxTranslation/.git/objects/pack/pack-3002d22690e007a4205f6ecfa19d6e93296fdd78.pack' to `/c/Source/TxTranslation/.git/objects/pack/old-pack-3002d22690e007a4205f6ecfa19d6e93296fdd78.pack'
error: failed to run repack
Run Code Online (Sandbox Code Playgroud)

我可以随心所欲地重试它,我总是再次得到第二个输出.上面的"预先拒绝"错误是无稽之谈.我相信这是我在许多Windows系统上看到的常见虚假错误.它可能来自病毒扫描程序,使文件保持打开状态,以便不能立即删除它们.这导致了各种各样的问题,但显然是无法避免的.

这是一个问题吗?有什么东西坏了?我完全不明白这些信息对我意味着什么.使用差异浏览日志仍然有效.我该怎么做才能解决这个问题?(幸运的是我之前已经把所有内容都推到了Github,所以我可以简单地重新克隆它,但是我想先尝试修复它,以防它再次发生.)

ygo*_*goe 33

事实证明,Visual Studio锁定了一些Git的文件.关闭Visual Studio解决了该问题.

FTR,我在VS2010中使用Git源代码控制提供程序(在最后一个可用的版本0.6.4中).也许这是事业的一部分.

  • 就我而言,它是 Eclipse IDE (2认同)

jak*_*nge 26

在我的情况下git gc,枚举后将无法运行重新包装,但在运行一些其他选项时成功,git gc --aggressive --prune=now.

  • 这对我来说.我的所有编辑都关闭了,我仍然在重新打包失败.其他选项有助于推动事态发展.谢谢! (4认同)
  • 不幸的是,尝试使用git gc --aggressive --prune = now之后,我仍然遇到相同的错误 (4认同)

aru*_*nvg 9

我使用eclipse得到了同样的问题.通过Eclipse和git bash访问git存储库.

关闭eclipse后运行gc解决了问题

环境

Windows 7的

Git 1.8.4.mysysgit.0

Eclipse Kepler SR2


rak*_*ice 5

如果您正在使用进行其他操作git,或在GUI 中执行了某些与git相关的操作,请取消该操作或关闭错误,然后手动运行git gc,然后重试该操作。基本上,在Windows上,此消息表示git命令行客户端与某些其他程序之间的争用。

就我而言,重新打包操作已作为的一部分自动触发git pull。当我收到错误消息后,通过快速的理智检查排除了权限问题,以确保启动git进程(IDE,git bash,git GUI)的所有东西都不会运行,我去了Process Explorer进行查找哪个进程打开了文件(查找->文件句柄或DLL),并且找到了git.exe另一个git.exe进程的父进程。我猜想自动重新打包代码中有一些锁定假设在Windows上不适用,默认情况下,打开文件会在操作系统级别对文件进行排他的读写锁定。

那是与

$ git --version
git version 1.9.2.msysgit.0
Run Code Online (Sandbox Code Playgroud)