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コマンドは期待どおりに動作しています
今のところこれに対する最もクリーンな解決策は、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の公式リリースに更新してください。
これは、zshを使用するときのiTermのバグだと思います。彼らは意図的に/ usr/bin/loginを呼び出さず、execleを使用して環境変数を必要に応じてクリアしません。
ITerm2の最新バージョンをダウンロードすると、これが修正されました!
別の解決策、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をお楽しみください!
一時的な解決策として、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を修正しますが、もっと良い解決策があると確信しています。
公式の修正が出る前に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を使用して同じことを行うことができます。
これは確かにハックですが、あなたを取り戻すでしょう。
編集:これを行う前に、必ず@pilifからの回答を見てください...
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
オーバーライドなしで適切に実行します。
Git-rebase.shの更新があります
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 /内にあることを前提としています。
更新:下記のリリースでまだ動作しません、私の間違い。 Git Pushは動作しますGit pullは動作しません。
この問題はApple Mac OS X Yosemite 10.10で修正されたようです(14A329r)。私は一般的なベータ版Yosemiteチャンネルにいます(開発者ではない) 。Git Push /引く 修正なしで再び期待どおりに動作します。