3 回答
TA贡献1780条经验 获得超4个赞
确保git-upload-pack在非登录shell的路径上。(在我的机器上它就在/usr/bin)。
要从非登录shell查看远程计算机上的路径,请尝试以下操作:
ssh you@remotemachine echo \$PATH
(适用于Bash,Zsh和tcsh,也可能适用于其他shell。)
如果它返回的路径不包含已有的目录,则git-upload-pack需要通过将其设置为.bashrc(对于Bash),.zshenv(对于Zsh),.cshrc(对于tcsh)或等效的shell 来修复它。
您需要在远程计算机上进行此更改。
如果您不确定需要添加到远程控制器的路径PATH,可以使用此命令找到它(需要在远程计算机上运行):
which git-upload-pack
在我打印的机器上/usr/bin/git-upload-pack。因此,在这种情况下,/usr/bin您需要确定的路径是否在远程非登录shell中PATH。
TA贡献1752条经验 获得超4个赞
您还可以使用“-u”选项指定路径。我发现这对我的.bashrc不会在非交互式会话中获取的机器很有用。例如,
git clone -u /home/you/bin/git-upload-pack you@machine:code
TA贡献1772条经验 获得超5个赞
基于Brian的回答,可以通过在克隆之后运行以下命令来永久地设置上载包路径,这消除了--upload-pack对后续拉/取请求的需要。同样,设置receive-pack消除了--receive-pack对推送请求的需要。
git config remote.origin.uploadpack /path/to/git-upload-pack
git config remote.origin.receivepack /path/to/git-receive-pack
这两个命令相当于将以下行添加到repo中.git/config。
[remote "origin"]
uploadpack = /path/to/git-upload-pack
receivepack = /path/to/git-receive-pack
频繁的用户clone -u可能对以下别名感兴趣。myclone应该是不言自明的。myfetch / mypull / mypush可以在其回购配置为通过替换上述没有被修改被用于git push与git mypush,等等。
[alias]
myclone = clone --upload-pack /path/to/git-upload-pack
myfetch = fetch --upload-pack /path/to/git-upload-pack
mypull = pull --upload-pack /path/to/git-upload-pack
mypush = push --receive-pack /path/to/git-receive-pack
- 3 回答
- 0 关注
- 4214 浏览
添加回答
举报