(Mac)-bash:__git_ps1:コマンドが見つかりません


222

ターミナルでコマンドプロンプトを変更しようとしています。エラーが発生し続けます:

-bash: __git_ps1: command not found

私はそのままターミナルに入力するだけで試しました:__git_ps1。私もそれを試してみました.bash_profile

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

あなたが見る/伝えることができるかもしれないように、はい、私はオートコンプリートをインストールしていて、それはうまくいきます!

私はこの質問に出くわしました:「PS1 env変数はMacでは機能しません」これはコードを与えます

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

それで、.bash_profile何かを変えることを期待してそれを追加します。まあ、それはしました。エラー出力を変更しただけです。

以下.bash_profileが追加されたものです:

alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \(.*\)/(\1)/'"

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

そして今ここに変更されたエラー出力があります:

sed: (%s): No such file or directory

注:エイリアスもソースの下に移動しましたが、違いはありません。私は gitバージョン1.7.12.1を持っています

これは簡単な変更です。誰かが私を助けてくれますか?

12/13/12を編集

いいえ、私は__git_ps1を自分で定義したくはありませんが、それが認識されるかどうかを確認しようとしていました。はい、.git-completion.bashファイルをインストールしました。これが私のマシンで自動補完を取得する方法です。

cd ~
curl -OL https://github.com/git/git/raw/master/contrib/completion/git-completion.bash
mv ~/git.completion.bash ~/.git-completion.bash

Aは、ls -laその後、一覧表示されます.git-completion.bashファイルを。

12/13/12を編集-Mark Longairが解決(下)

次のコードは私にとってはうまくいきましたが.bash_profile、他の人はうまくいきませんでした...

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='Geoff[\W]$(__git_ps1 "(%s)"): '
fi

git-completion.bash__git_ps1シェル関数として定義しています。あなたのですか?完了が機能していることをどのようにして確認しますか?git h<TAB> を入力するとどうなりますか?
rob mayoff

入力すると、git help [space]で終了します
Geoff

受け入れられた答えは良いですが、プロンプトはgit <tab>Mark Longairによって参照されるコミットで言及されているように、ヒットすることによっても有効にできます。
ジャックフロスト

これは、わかりやすい質問であるだけでなく、解決策を導くのに役立つリソースでもあります。当然の賛成票。
Yannis Dran 2014

OS X 10.8.5でscreen(1)の内部でbashを実行するときに-fチェックが機能してこのエラーを修正しました。ファイルは関係なく存在していたので、理由はわかりませんが、それでもなお感謝します!
Nick K9 14年

回答:


324

git-completion.bashfrom のバージョンをインストールしましmasterた-gitの開発履歴では、これは__git_ps1、完了機能から新しいファイル(git-prompt.sh)に関数を分割したコミット後です。根拠を説明するこの変更を導入したコミットは、af31a456です。です。

のバージョンを入手することをお勧めしますgit-completion.bash(またはgit-prompt.shgitのインストールにバンドルされている)の。

ただし、何らかの理由でmaster、から個別にダウンロードしたスクリプトを使用してこの機能を引き続き使用する場合は、git-prompt.sh同様にダウンロードする必要があります。

curl -o ~/.git-prompt.sh \
    https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

...次の行をyourに追加します~/.bash_profile

source ~/.git-prompt.sh

その後、PS1インクルードする変数は__git_ps1 '%s'正常に機能するはずです。


__git_ps1を自分で定義したくないのは当然です。私はそれがそれを認識するかどうかを確認しようとしていましたが、認識しませんでした。ルートに.git-completion.bashがあります。上記の質問を更新して、オートコンプリートがどのように機能するかを含めます...
Geoff

@ designer84:追加情報をありがとう-問題が何であるかは今では明らかだと思います。説明を付けて回答を更新しました。
Mark Longair 2012年

なぜこれが機能しないのですか?if [-f /usr/local/git/contrib/completion/git-completion.bash]; 次に、ソース/usr/local/git/contrib/completion/git-completion.bash export PS1 = '[\ W] $(__ git_ps1 "(%s)"):' fi
Geoff

5
Homebrew経由でインストールされたgit 1.8.5.3がインストールされたOSX 10.9では、git-prompt.shとの両方git-completion.bashが見つかり`brew --prefix git`/etc/bash_completion.d/ます。
ドッカビ14

1
MacPortsでは、パッケージgit-coreがに置き換えられたときにパスが変更されましたgitこの質問を
Ramon de la Fuente

60

OSX 10.9 Mavericksにアップグレードした後、次のファイルを参照してgitシェルコマンドを完了させ、gitプロンプトを再度機能させる必要がありました。

私の.bash_profileまたは同様のものから:

if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash ]; then
    . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-completion.bash
fi

source /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh

#shell prompt example
PS1='\u $(__git_ps1 "(%s)")\$ '

これはosv 10.9での私の問題でもありました
jeremyjjbrown 14

@marklongairからの受け入れられた応答は適切な説明ですが、(OS 10.10にアップグレードした後)エラーメッセージをGoogle検索してこの質問を見つけました。この回答が私の問題の最も簡単な解決策です(単に新しい場所へのパスを変更するだけです) )。
RedBassett 2014年

これは10.10.5 Yosemiteで機能しましたが、git-promptの場所をに変更しました~/.git_prompt.sh。他のソリューションは機能しませんでした。
2015年

私はあなたに提案行を追加したの.bash_profileが、それでもエラーを取得しています:bash: __docker_machine_ps1: command not found
IgorGanapolsky

43

あなたがすべき

$ brew install bash bash-completion git

次に、.bashrcで「$(brew --prefix)/ etc / bash_completion」をソースします。


素晴らしい回答です。gitがbrewでインストールされている場合は、間違いなく最良の方法です。しかし、私はこれを調達する必要があると思います:source $(brew --prefix)/etc/bash_completion.d/git-prompt.sh
febLey

1
@febLeyはい、場所が変更されました。答えを更新しました。ありがとう。
Steven Shaw

これは機能しません。エラーが発生する:bash:/usr/local/etc/bash_completion.d/git-prompt.sh:Permission denied bash:__docker_machine_ps1:command not found
IgorGanapolsky

14

以下は魅力のように私のために働きました:

ターミナルで以下を実行します:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

bash_profileを開く/作成する:

$ vi ~/.bash_profile

以下をファイルに追加します。

source ~/.bash_git
export PS1='\[\033[01;32m\]os \[\033[01;34m\]\w $(__git_ps1 "[%s]")\$\[\033[00m\] '
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"

最後に、以下を使用してソースします。

$ source ~/.bash_profile

これはの問題を解決しますbash: __git_ps1: command not found

また、プロンプトが「os」に変わります。「os」を別のものに変更するには、エクスポートPS1行の「os」文字列を変更します。


それでもエラーsh -c "clear && / bin / bash" bash:__docker_machine_ps1: Docker CLIに入るたびにコマンドが見つかりません
IgorGanapolsky 2016

8

MacOS Sierraおよびgitバージョン2.10.1 <2017-2-06>のソリューション

ステップ1:Gitをインストールする

すでに最新のgitをインストールしている場合は、この手順をスキップできます。

ブラウザからgitパッケージをダウンロードhttps://git-scm.com/download/

注:でインストールする場合 curl [option] https://...ダウンロードオプションを使用し、システムがSSLをサポートしていることを確認する必要があります。そのため、新しいコーナーでは、ブラウザーからダウンロードしてgitインストーラーから直接インストールする方がはるかに簡単です。

インストールの確認:
  • gitディレクトリの場所を次の場所に表示します。 which git
  • gitの現在のバージョンを表示します。git --version現在のバージョンは2.10.1である必要があります。

ステップ2:gitプロファイルをシェルに追加する

  1. シェルプロファイルを開きます。
    • nano ~/.bash_profileまたはnano ~/.bashrc変更がどこにあるかに依存します。
  2. 次のコードをファイルに追加します。
    • source /usr/local/git/contrib/completion/git-completion.bash
    • source /usr/local/git/contrib/completion/git-prompt.sh

注:OSXをEl Capitainにアップグレードした後、gitのインストール場所がopt /ディレクトリからusr / local /に変更されました。これが、MacOS Sierraで上記の古い回答の一部が機能しない理由です。

  1. PS1構成に次のコードを追加します。

    • オプション1:PS1に直接追加する: export PS1='\w$(__git_ps1 "(%s)") > '

      私はすでに.git-completion.bashホームディレクトリにあることを知っているので、この単純なアプローチを好みます。また、その前に他のプロンプト形式を追加できます。ここにあなたの参照のための私の個人的なプロンプトがあります:export PS1='\t H#\! \u:\w$(__git_ps1 "{%s}") -->> '
    • オプション2:選択スクリプトを追加する

    if [-f〜/ .git-completion.bash]; その後
          エクスポートPS1 = '\ w $(__ git_ps1 "(%s)")>'
    fi
  2. プロファイルを保存して使用:source ~/.bash_profileまたはsource ~/.bashrc

これで、gitプロンプトが正しく機能し、現在どのブランチにいるかが表示されます。

5

ヨセミテにアップグレードするときにも同じ問題がありました。

古いパスの代わりに変更する必要~/.bashrcsource /usr/local/etc/bash_completion.d/git-prompt.shありました。

その後. ~/.bashrc、効果を上げるためにを再調達します。


5

色の高いシエラクリーンソリューション!

ダウンロードなし。醸造なし。Xcodeなし

〜/ .bashrcまたは〜/ .bash_profileに追加するだけです

export CLICOLOR=1
[ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh ] && . /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
export GIT_PS1_SHOWCOLORHINTS=1
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM="auto"
PROMPT_COMMAND='__git_ps1 "\h:\W \u" "\\\$ "'

4

__git_ps1 for bashは、brewをインストールしたgitバージョン1.8.1.5の/usr/local/etc/bash_completion.dのgit-prompt.shにあります。


2

これはOS 10.8の.bash_profileで機能します

if [ -f ~/.git-prompt.sh ]; then
  source ~/.git-prompt.sh
  export PS1='YOURNAME[\W]$(__git_ps1 "(%s)"): '
fi

エラーを修正しません:bash:__docker_machine_ps1:command not found
IgorGanapolsky

2

Macportsの場合、追加する必要がありました:source /opt/local/share/git-core/git-prompt.sh./profileに


1
@IgorGanapolsky Macportsがインストールされていないと思いますか?単に行いますtouch ~/.profile。/opt/local/share/git-core/git-prompt.sh:しかし、あなたは明らかにファイル必要
velop

2

Homebrewを使用してGitをアップグレードすることを希望していて、システムが一般的に古くなっている場合(私が行ったように)、最初にHomebrew自体を最新にする必要がある場合があります( brewの更新:次の追跡されていない作業ツリーファイルは、マージによって上書きされます。感謝@ chris-frisina)

まずHomebrewを現在のバージョンに合わせます

cd / usr / local
git fetch origin
git reset --hard origin / master

次にGitを更新します。

醸造アップグレードgit

問題が解決しました!;-)


2

少なくともXcode 6を使用すると、すでにを使用していますgit-completion.bash。Xcodeアプリバンドル内にあります。

これを.bashrcに追加するだけです:

source `xcode-select -p`/usr/share/git-core/git-completion.bash

2
  1. このGit完了からファイルgit-prompt.shおよびgit-completion.bashをダウンロードします
  2. ファイルの名前を変更します。
  3. それらのファイルをホームディレクトリに移動します。
  4. ソースファイルを.bash_profileに追加します。

    source ~/git-completion0.bash
    source ~/git-prompt0.sh
    and four to trigger the code block.
    

1

私はそれが本当の答えではないことを知っています...

私の.bashrcでgit-prompt.shを調達する際にいくつかの奇妙な問題があったため、他の解決策を探し始めました。これ:http : //www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-prompt/ //www.jqno.nl/post/2012/04/02/howto-display-the-current-git-branch-in-your-prompt/は__git_ps1を使用せず、作者もそれが機能すると主張していますMac(今のところ、それは私のUbuntuで完全に動作し、簡単に調整できます)。

お役に立てば幸いです。


1

私はgit hubのUdacityに関するコースを行っていて、これと同じ問題がありました。makeが正しく機能する私の最終的なコードは次のとおりです。

# Change command prompt
alias __git_ps1="git branch 2>/dev/null | grep '*' | sed 's/* \ .   (.*\)/(\1)/'"

if [ -f ~/.git-completion.bash ]; then
  source ~/.git-completion.bash
  export PS1='[\W]$(__git_ps1 "(%s)"): '
fi

source ~/.git-prompt.sh
export GIT_PS1_SHOWDIRTYSTATE=1
# '\u' adds the name of the current user to the prompt
# '\$(__git_ps1)' adds git-related stuff
# '\W' adds the name of the current directory
export PS1="$purple\u$green\$(__git_ps1)$blue \W $ $reset"

できます! https://i.stack.imgur.com/d0lvb.jpg


0

これは私にとってはうまくいきました、そしてそれはgit出力を着色し、ファイルが変更された/追加されたかどうかのプロンプトのインジケーターをそれに焼き付けました:

GIT_PS1_SHOWDIRTYSTATE=true

. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-completion.bash
. /usr/local/Cellar/git/1.8.5.2/etc/bash_completion.d/git-prompt.sh

PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ '

必ず正しいパスを使用してください!私は自作でgitをインストールしましたbrew list gitし、現在のインストールへのパスを取得するためしました。

ハードコードされたパスを使用しないのは良いことですが、現在のインストールへのパスを取得する方法がわかりません。

詳細はこちら:http : //en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/


0

gitにはがあります/Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh。そして、見てください/etc/bashrc_Apple_Terminal

だから、私はこれらを入れました~/.bash_profile

if [ -f /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh ]; then
  . /Applications/Xcode.app/Contents/Developer/usr/share/git-core/git-prompt.sh
  export GIT_PS1_SHOWCOLORHINTS=1
  export GIT_PS1_SHOWDIRTYSTATE=1
  PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }__git_ps1 '\u:\w' '\\\$ '"
fi

それでもこのエラーが発生する:bash: __docker_machine_ps1: command not found
IgorGanapolsky 2016

0

序文:ヘイスクラークの回答にコメントせずに新しい回答を作成して申し訳ありません。単に担当者が不十分です。

Xcodeまたはhome-brewを介してgitをインストールしていない場合は/Library/Developer/CommandLineTools/、haysclarksが参照しているのではなくで参照しているbashスクリプトがあるため、/Applications/Xcode.app/Contents/Developer/.bashrcに次の行が含まれるようにしてください。

if [ -f /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash ]; then
    . /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
fi

source /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh

git-promptも使用する場合は、これらの行が必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.