私はプロジェクトの 2 つのコピーを同期させるために git を使っています。1 つはローカル ボックス、もう 1 つはテスト サーバーです。これは、ssh を使用してリモート開発サーバーにログオンするときに発生する問題です。
git clone [email protected]:/home/chris/myproject
Initialized empty Git repository in /tmp/myproject/.git/
Password:
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly
fetch-pack from '[email protected]:/home/chris/myproject' failed.
(犯人保護のためファイル名は変更されています...!)
どちらのボックスも Solaris 10 AMD を実行しています。 少し調べてみたところ、--upload-pack=$(which git-upload-pack)
コマンドを追加する$PATH
と機能することがわかりました (また、RTFM ソリューションに従って 'git-upload-pack' へのパスが含まれていることが証明されました)。しかし、これは本当に面倒です。さらに、'git push' は機能しません。オプションがないと思うからです--unpack=
。
ちなみに、すべての git コマンドはローカル ボックスから正常に動作します。これは、同じ NFS マウントにインストールされている同じバージョンのソフトウェア (1.5.4.2) です/usr/local/bin
。
誰か助けてくれませんか?
ベストアンサー1
git-upload-pack
非ログイン シェルからのパスに があることを確認してください。(私のマシンでは にあります/usr/bin
)。
ログインしていないシェルからリモート マシン上のパスがどのようになっているかを確認するには、次を試してください。
ssh you@remotemachine echo \$PATH
(これは Bash、Zsh、tcsh でも動作しますが、おそらく他のシェルでも動作します。)
返されるパスに があるディレクトリが含まれていない場合は、 (Bash の場合)、(Zsh の場合)、(tcsh の場合)、またはシェルの同等のgit-upload-pack
を設定して修正する必要があります。.bashrc
.zshenv
.cshrc
この変更はリモート マシンで行う必要があります。
リモートに追加する必要があるパスがわからない場合はPATH
、次のコマンドで見つけることができます (リモート マシンでこれを実行する必要があります)。
which git-upload-pack
私のマシンでは が印刷されます/usr/bin/git-upload-pack
。したがって、この場合、/usr/bin
がリモートの非ログイン シェルにあることを確認する必要があるパスですPATH
。