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 關注
- 4270 瀏覽
添加回答
舉報