23

私はこの答えを約85回読みましたが、正しく理解していないことがあります。

git-upload-pack:コマンドが見つかりません。これを正しく修正する方法

サーバーにリポジトリのクローンを作成しようとすると、次のようになります。

bash: git-upload-pack: command not found

しかし、cloneに-u /usr/local/bin/git-upload-packオプションを指定してクローンを作成すると、すべてうまく機能します。

これは私のサーバー上のgit-upload-packの位置なので、理にかなっていると思います。

一番上の答えは、サーバー上の.bashrcファイルを更新して、これを反映する必要があることを示しています。結果は.ssh you@remotemachine echo \$PATHを返さないため/usr/local/binです。(戻ります/usr/bin:/bin:/usr/sbin:/sbin)。

しかし、.bashrcファイルを見ると、次の内容が含まれています。

export PATH=/usr/local/bin:$PATH

だから今私は混乱しています。

-u /usr/local/bin/git-upload-pack毎回オプションを使用しないようにするにはどうすればよいですか?なぜssh you@remotemachine echo \$PATH戻らないの/usr/local/binですか?これはログインシェルと非ログインシェルと関係がありますか?

助けてください!前もって感謝します。

4

5 に答える 5

26

これはこの問題に関連しています:

https://serverfault.com/questions/130834/svnssh-getting-bash-to-load-my-path-over-ssh

インタラクティブモードに移行せずにコマンドを送信すると、Sshはデフォルトで環境をロードしません。

良い解決策は、.ssh/environmentファイルを使用したものです。

/ etc / ssh / sshd_configに追加:

PermitUserEnvironment yes

次に、.ssh /ディレクトリを作成し、環境を.ssh/enviromentにダンプします。

cd ~/
mkdir .ssh
env > .ssh/environment

SSHを再起動します

/etc/init.d/sshd restart

これをローカルマシンから実行すると、次のようになります。

ssh you@server.com  "which git-upload-pack"

あなたは得るだろう

/usr/local/bin/git-upload-pack

とgitクローンが動作します。

于 2012-06-28T14:59:49.880 に答える
12

はい、それはログインシェルと非ログインシェルに関係しています。.bashrcファイルは、ログイン以外のシェルでのみロードされます。.bash_profileログインシェルに使用できます。同じ変更をファイルに追加するだけPATHで、問題は.bash_profileありません。

export PATH=/usr/local/bin:$PATH

これは、.bashrcと.bash_profileの違い、およびログインシェルと非ログインシェルの違いに関する興味深い記事であることがわかります。

于 2012-06-20T21:31:23.087 に答える
6

私の場合、リモートマシン、Ubuntuボックスにログインし、を実行することでこの問題を解決しましたsudo apt-get install git。これがやり過ぎかどうかはわかりませんが、問題はすぐに解決しました。

于 2014-08-21T07:36:52.297 に答える
2

この問題に対する私の解決策

  1. リモートマシンのgit-upload-packのパスを確認します。

    ssh yourname@IP-addressORdomain 'which git-upload-pack'
    

パスが指定されている場合は、それをコピーします(スラッシュなしgit-upload-packで末尾にスラッシュを付けます。例:、、、/usr/binなど/home/yourname/bin/whatever/gituploadpack/path

  1. ログインシェル中にリモートマシンのPATHを確認します。

    ssh yourname@IP-addressORdomain 'echo $PATH'
    

そのような道/whatever/gituploadpack/pathはありません()ですね。良い!

  1. リモートマシンにログインします。

    ssh yourname@IP-addressORdomain
    
  2. .bashrc_profileを開きます:

    nano /home/yourname/.bashrc_profile
    
  3. もしあれば、これらの行を見つけてください:

    if [ -f ~/.bashrc ]; then
         ~/.bashrc
    fi
    

...そしてそれらを次のように変更します:

    if [ -f ~/.bashrc ]; then
        source ~/.bashrc
    fi
  1. .bashrcを開きます:

    nano /home/yourname/.bashrc
    
  2. 次の4行を追加します。

    if [ -d "/whatever/gituploadpack/path" ] ; then
      PATH="$PATH:/whatever/gituploadpack/path"
    fi
    export PATH
    
  3. リモートマシンを終了します。

    exit
    
  4. ログインシェル中にリモートマシンのPATHを確認します。

    ssh yourname@IP-addressORdomain 'echo $PATH'
    

見え/whatever/gituploadpack/pathますか?おめでとうございます!

git-upload-packこれで、問題だけでなく、!git-receive-packのその他の実行可能ファイルも解決したことに注意してください/whatever/gituploadpack/path

于 2014-08-15T13:19:01.733 に答える
0

次のエラーが発生していました: git-credential-osxkeychain died of signal 11 git pullを実行していると、次のエラーが発生します fatal: https://github.com/.../../info/refs?service=git-upload-pack not found: did you run git update-server-info on the server?

キーチェーン内の以前の無効なgithubクレデンシャルに関係していると思います。

  • コマンドスペースを使用して開いたキーチェーンアクセスツール
  • キーチェーンアクセスツールでgithubを検索しました
  • githubに関連するすべてのエントリを削除しました(不要になったため)
  • セットアップgitパスワードキャッシングセクションに続いて再度セットアップgit
  • 機能した

上記の回答のいずれかが役に立たない場合。

于 2013-03-24T01:53:28.370 に答える