web-dev-qa-db-ja.com

git pullのOSX 10.10ヨセミテベータ:git-sh-setup:そのようなファイルまたはディレクトリはありません

OSX 10.10 Yosemite Betaにアップグレードした後、git pullは次のエラーを返しています。

/ Library/Developer/CommandLineTools/usr/libexec/git-core/git-pull:11行目:git-sh-setup:そのようなファイルまたはディレクトリはありません

参照されているgit-coreディレクトリを確認しましたが、git-sh-setup.shがそこにあります。

他のgitコマンドは期待どおりに動作しています

90
meghaphone

今のところこれに対する最もクリーンな解決策は、iTermセッションの初期コマンドを次のように変更することだと思います。

/usr/bin/login -f <your user name>

これで問題が修正されます。

問題の分析のためのさらなるデータポイント:10.10では、PATH環境変数の複数のコピーが存在し、サブシェルは2番目のコピーを好むようです。

これを再現するには、iTermによって起動されたコンソールでココアアプリケーションを起動します。次のような警告が表示されます。

2014-06-04 19:23:09.859 gitx[14676:362580] *** -[NSProcessInfo environment]: Warning: duplicate definition for key 'PATH' found in environment -- subsequent definitions are ignored.  The first definition was '(the path I have configured in my Shell)', the ignored definition is '/usr/bin:/bin:/usr/sbin:/sbin'.

これはiTermではなく10.10の問題であると信じていますが、iTermがそれを明示しているのは、Terminal.appでは発生しません。

更新:これは、iTermが環境に対して「興味深い」ことを行っていることが原因です。この問題を解決するには、iTerm 2.0の公式リリースに更新してください。

100
pilif

これは、zshを使用するときのiTermのバグだと思います。彼らは意図的に/ usr/bin/loginを呼び出さず、execleを使用して環境変数を必要に応じてクリアしません。

ITerm2の最新バージョンをダウンロードすると、これが修正されました!

20
Marthyn Olthof

別の解決策、iTerm2を変更する

cd /Applications/iTerm.app/Contents/MacOS
mv iTerm iTerm-bin

cat > iTerm <<EOF
#!/bin/sh
unset PATH
\${0}-bin
EOF

chmod +x iTerm

できた.

YosemiteでiTerm2をお楽しみください!

16
Feng

一時的な解決策として、git-pull行11、12、および336を次のように変更しました。

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n

eval="/usr/local/Cellar/git/2.0.0/libexec/git-core/git-merge $diffstat $no_commit $verify_signatures $edit $squash $no_ff $ff_only"

これは今のところgit-pullを修正しますが、もっと良い解決策があると確信しています。

13
Ubiquill

公式の修正が出る前にGitを動作させる必要がある場合の一時的な修正(HomebrewとGit 2.0.0を想定)です。 2つのシェル変数をセットアップします。

export GIT_PATH="/usr/local/Cellar/git/2.0.0/bin"
export GIT_CORE_PATH="/usr/local/Cellar/git/2.0.0/libexec/git-core"

...そしてgitのインスタンスを適切な絶対リンクに置き換えました。次のGistsを使用して同じことを行うことができます。

  • / usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup /git -sh-setup
  • / usr/local/Cellar/git/2.0.0/libexec/git-core/git-stash /git-stash
  • / usr/local/Cellar/git/2.0.0/libexec/git-core/git-pull /git-pull

これは確かにハックですが、あなたを取り戻すでしょう。

編集:これを行う前に、必ず@pilifからの回答を見てください...

3
jbnunn

Git-pullファイルを編集して、この行を(コメントブロックの直後に)追加します

PATH="$(dirname $0):$PATH"

または、これを端末にコピーして貼り付けます:

ed -s $(which git-pull) <<< $'6i\nPATH="$(dirname $0):$PATH"\n.\nwq'

Update:pilif で推測されるように、最後のiTerm2アップデート(1.0.0.20140629)以降、git-pullこのPATHオーバーライドなしで適切に実行します。

1
pyrou

Git-rebase.shの更新があります

https://github.com/git/git/pull/110/files

1
basbebe

Ubiquillの回避策はgit rebase(およびおそらく他の機能が動作しない場合)にも適用されます。その場合、47行目と48行目を次の*に置き換える必要があります。

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n

*このパスは、homebrewでgitがインストールされており、/ usr/local/Cellar/git/2.0.0 /内にあることを前提としています。

1
ferchak

更新:下記のリリースでまだ動作しません、私の間違い。 Git Pushは動作しますGit pullは動作しません。

この問題はApple Mac OS X Yosemite 10.10で修正されたようです(14A329r)。私は一般的なベータ版Yosemiteチャンネルにいます(開発者ではない) 。Git Push /引く 修正なしで再び期待どおりに動作します。

0
Frank Lämmer