我在谷歌上搜索过,找到了很多解决方案,但没有一个适合我。
我试图通过连接到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
正如@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将拉你所有的远程分支现在
这是令人困惑的,因为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
有可能不会发生缓冲区溢出。