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

我试图通过连接到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

当前回答

以上的解决方案对我都不起作用。

最终对我有效的解决方案是切换SSH客户端。 GIT_SSH环境变量设置为Windows Server 2019提供的OpenSSH。 7.7.2.1版本

C:\Windows\System32\OpenSSH\ssh.exe

我简单地安装了腻子,0.72

巧克力安装腻子

并将GIT_SSH更改为

C: \ ProgramData chocolatey喝李勃putty.portable喝工具\ PLINK.EXE。

其他回答

在您的本地机器目录中,您可能会耗尽空间。在您要下载的机器中添加额外的存储空间,并重复签出。你的问题可能就是这么简单。

我也遇到过同样的问题。REPO太大,无法通过SSH下载。就像@elin3t推荐的那样,我已经通过HTTP/HTTPS克隆了,并将.git/config中的REMOTE URL更改为使用SSH REPO。

这是令人困惑的,因为Git日志可能会提示任何连接或ssh授权错误,例如:ssh_dispatch_run_fatal: connection to x.x.x.x port yy: message authentication code incorrect,远端意外挂起,早EOF。

服务器端解决方案

让我们在服务器端优化git存储库:

进入我的服务器的git裸库。 调用git gc。 调用git重新打包-A

Eg:

ssh admin@my_server_url.com
sudo su git
cd /home/git/my_repo_name # where my server's bare repository exists.
git gc
git repack -A

现在我能够克隆这个存储库没有错误,例如在客户端:

git clone git@my_server_url.com:my_repo_name

git gc命令可以在git客户端调用,以避免类似的git推送问题。


如果您是Gitlab服务的管理员,请手动触发Housekeeping。它在内部调用git gc或git repack。


客户端解决方案

其他(黑客,仅客户端)解决方案是下载没有历史记录的上一个master:

git clone --single-branch --depth=1 git@my_server_url.com:my_repo_name

有可能不会发生缓冲区溢出。

确保你的硬盘有足够的剩余空间

这些对我来说都没用,但使用Heroku的内置工具却奏效了。

heroku git:clone -a myapp

文档在这里:https://devcenter.heroku.com/articles/git-clone-heroku-app