通过SSH管道失败的Git推送失败

时间:2018-01-23 00:07:14

标签: git ssh

我在内部服务器上有一个远程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'

3 个答案:

答案 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的一些东西已经崩溃了。