我在内部服务器上有一个远程git仓库,我再也无法推送到:
% git push
Broken pipe
直到几个星期前我才开始工作(我本月第一次尝试了这种方式)。
我能够ssh就好了:
% ssh sol date
Mon Jan 22 15:23:33 PST 2018
我启用了GIT_TRACE = 2并看到了这个:
% git push
16:00:52.629043 git.c:344 trace: built-in: git 'push'
16:00:52.643399 run-command.c:626 trace: run_command: 'ssh' 'sol' 'git-receive-pack '\''/vol/git/cmb.git'\'''
16:00:52.991631 run-command.c:626 trace: run_command: 'pack-objects' '--all-progress-implied' '--revs' '--stdout' '--thin' '--delta-base-offset' '--progress'
Broken pipe
这是否意味着它试图在本地或远程主机上运行“pack-objects”? “pack-objects”是否是默认$ PATH中的可执行文件?我没有看到它:
% which pack-objects
pack-objects: Command not found.
本地系统是Windows 10 + Cygwin + git 2.15.1 远程系统是RHEL 7 + git 2.15.1。 git安装来自ius并使用默认路径,因此/ bin / git是默认的$ PATH。
我确实试过这个,即使我认为它只影响HTTP:
% git config http.postBuffer 52428800
16:00:49.671332 git.c:344 trace: built-in: git 'config' 'http.postBuffer' '52428800'
我也尝试过“git fetch”,它会出错:
% git fetch
10:08:37.458683 git.c:344 trace: built-in: git 'fetch'
10:08:37.756135 run-command.c:626 trace: run_command: 'ssh' 'sol' 'git-upload-pack '\''/vol/git/cmb.git'\'''
10:08:39.441934 run-command.c:626 trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
10:08:39.737251 run-command.c:626 trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all' '--quiet'
error: sol:/vol/git/cmb.git did not send all necessary objects
10:08:40.226984 run-command.c:626 trace: run_command: 'gc' '--auto'
答案 0 :(得分:1)
要排除任何客户端问题,请尝试使用相同的命令:
答案 1 :(得分:0)
默认情况下,RHEL 7附带较旧的Git。也许您的2.15.1安装不在标准路径中,并且使用$PATH
或在非交互式SSH期间未调用的其他shell机制将其添加到.profile
?如果是这种情况,请尝试使用
git push --receive-pack=/path/to/git-receive-pack
在交互式SSH会话期间确定远程路径上的正确路径后
答案 2 :(得分:0)
问题似乎与客户端上的Cygwin git安装有关。如果我按照建议安装Git for Windows 2.16.1(谢谢VonC!),那么工作正常。所以Cygwin git的一些东西已经崩溃了。