git clone失败,"index-pack"失败了吗?

gct*_*gct 48 git clone

所以我创建了一个不是裸的远程仓库(因为我需要redmine才能读取它),并且它被设置为与组共享(所以git init --shared = group).我能够推送到远程仓库,现在我正在尝试克隆它.

如果我通过网络克隆它,我得到这个:

remote: Counting objects: 4648, done.
remote: Compressing objects: 100% (2837/2837), done.
error: git-upload-pack: git-pack-objects died with error.B/s  
fatal: git-upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)

我能够在没有问题的情况下在本地克隆它,我运行了"git fsck",它只报告了一些悬空树/ blob,我明白这不是问题.可能是什么导致了这个?我仍然可以从中拉出来,而不是克隆.我应该注意远程git版本是1.5.6.5而本地版本是1.6.0.4

我尝试克隆我的本地副本的repo,剥离.git文件夹并推送到一个新的repo,然后克隆新的repo,我得到相同的错误,这让我相信它可能是repo中的一个文件导致git-upload-pack失败...

编辑:我在repo中有很多windows二进制文件,因为我只是构建了python模块,然后将它们放在那里,所以其他所有人都不需要构建它们.如果我删除windows二进制文件并推送到一个新的repo,我可以再次克隆,也许这给了一个线索.试图缩小目前导致问题的确切文件.

小智 21

我解决这个问题的方法是这样的:我的git守护进程在windows上运行,而客户端在其他计算机上运行.

我找到了一种解决方法(但它只适用于Windows).

从cmd.exe启动详细信息启动git守护程序:

"C:\Program Files\Git\bin\sh.exe" --login -i -c 'git.exe daemon --verbose  '
Run Code Online (Sandbox Code Playgroud)

未经测试,如果它直接在git bash中工作.也许会的.

然后(在开始任何克隆,拉,取,...之前)在窗口中选择一些文本(注意:必须启用"快速编辑模式"(可在以下位置找到:cmd.exe - >属性(单击左上角)您的cmd窗口的一角) - >编辑选项))git守护程序在其中运行.这将阻止它在该窗口中打印任何进一步的消息.

当git守护程序的输出线程被阻塞时,则不会发生错误

  • 奇怪,但这对我也有用.1.在Windows上运行git bash 2.启动一个守护进程(git守护进程--verbose --export-all --reuseaddr --base-path =.)3.标记一些文本(系统菜单 - >编辑 - >标记在bash shell)4.保留标记的文本(不要按回车键)并且守护进程正常工作(!),否则每次都会在客户端上出现早期EOF错误. (3认同)
  • 这在标准命令shell(cmd.exe)中的Windows 10上适用于我.只需单击窗口图标,编辑 - >标记并选择一些文本.很奇怪. (2认同)

小智 14

我和你有同样的问题; 克隆i时的错误消息:

Cloning into test...
remote: Counting objects: 6503, done.
remote: Compressing objects: 100% (4519/4519), done.
Connection to git.myhost.im closed by remote host.| 350 KiB/s
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)

就我而言,原因是我的存储库大小(200M)大于我git服务器的内存(128M).当我从git服务器克隆时,我top在我的服务器上使用命令,这表明内存使用很快超过128M.

当我使用另一台具有4G内存的服务器时,git clone一切都还可以.您还可以尝试向服务器添加更多交换空间.

  • 将此添加到`.gitconfig`修复:`[core] packedGitLimit = 512m packedGitWindowSize = 512m [pack] deltaCacheSize = 2047m packSizeLimit = 2047m windowMemory = 2047m` - 显然是换行符. (7认同)

Yan*_*min 13

"git gc"会抱怨吗?

  • 我不知道如何,但运行该命令首先为我修复它. (4认同)
  • 同样在这里,在`git pull`之前运行`git gc`解决了这个问题 (2认同)

小智 3

我也遇到了 cygwin git 的问题,错误:fatal: index-pack failed

我能够通过为我的项目创建安装并将其设置为二进制模式来解决这个问题。因为我的/c设置为文本模式。

将 cygwin 添加到/etc/fstab

c:/work/Projects /projects some_fs binary 0 0
Run Code Online (Sandbox Code Playgroud)

运行mount -a以安装所有驱动器。

您需要/projects与 cygwin 一起工作git/c/work/Projects否则会失败。

不确定这是否适合您。