我在谷歌上搜索过,找到了很多解决方案,但没有一个适合我。

我试图通过连接到LAN网络中的远程服务器从一台机器克隆。 在另一台机器上运行此命令会导致错误。 但是使用git运行相同的克隆命令://192.168.8.5…在服务器上,这是正常的并且成功的。

有什么想法吗?

user@USER ~
$ git clone  -v git://192.168.8.5/butterfly025.git
Cloning into 'butterfly025'...
remote: Counting objects: 4846, done.
remote: Compressing objects: 100% (3256/3256), done.
fatal: read error: Invalid argument, 255.05 MiB | 1.35 MiB/s
fatal: early EOF
fatal: index-pack failed

我已经在.gitconfig中添加了这个配置,但也没有帮助。 使用git版本为1.8.5.5.2 .msysgit.0

[core]
    compression = -1

当前回答

在我的例子中,问题不在于git配置参数,而是我的存储库中有一个文件超过了系统允许的最大文件大小。我能够检查它试图下载一个大文件,并得到一个“文件大小限制超过”在Debian上。

之后,我编辑了我的/etc/security/limits.conf文件,在它的末尾添加了以下几行:

硬fsize 1000000 软fsize 1000000

要真正“应用”新的限制值,您需要重新登录

其他回答

下面的配置设置不适合我。

[core] 
packedGitLimit = 512m 
packedGitWindowSize = 512m 
[pack] 
deltaCacheSize = 2047m 
packSizeLimit = 2047m 
windowMemory = 2047m

正如之前的评论,这可能是git的内存问题。 因此,我尽量减少工作线程(从32个减少到8个),这样它就不会同时从服务器获取太多数据。然后我还添加了“-f”来强制同步其他项目。

-f: Proceed with syncing other projects even if a project fails to sync.

那么现在可以正常工作了。

repo sync -f -j8

如果你在Windows上,你可能想检查git克隆失败的“index-pack”失败?

基本上,在运行git.exe守护进程之后…命令,从控制台窗口中选择一些文本。重试拉/克隆,它现在可能工作了!

更多信息请看这个答案。

我尝试了这里提出的所有建议,但没有一个奏效。对我们来说,这个问题是不稳定的,而且随着回购的规模越来越大(在Jenkins Windows构建奴隶上),情况变得越来越糟。

它最终成为git使用的ssh版本。Git被配置为使用某个版本的Open SSH,在用户的.gitconfig文件中通过内核指定。sshCommand变量。把那条线拆了,它就固定了。我相信这是因为Windows现在提供了一个更可靠/兼容的SSH版本,默认使用。

对我来说,这很有帮助:

git clone --depth 1 --branch $BRANCH $URL

这将限制签出到只提到的分支,因此将加快过程。

希望这能有所帮助。

正如@ingyhere所说:

浅克隆

首先,关闭压缩:

git config --global core.compression 0

接下来,让我们做一个部分克隆来截断下来的信息量:

git clone --depth 1 <repo_URI>

当它工作时,进入新目录并检索克隆的其余部分:

git fetch --unshallow

或者,或者,

git fetch --depth=2147483647

现在,拉一下:

git pull --all

然后解决你本地分支只跟踪主的问题

在您选择的编辑器中打开git配置文件(.git/config)

上面写着:

[remote "origin"]
    url=<git repo url>
    fetch = +refs/heads/master:refs/remotes/origin/master

换线

fetch = +refs/heads/master:refs/remotes/origin/master

to

fetch = +refs/heads/*:refs/remotes/origin/*

做一个git取回和git将拉你所有的远程分支现在