242

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

-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 variable does not work on 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を持っています

これは単純な変更である必要があります。誰か助けてくれませんか?

2012 年 10 月 13 日を編集

いいえ、私は __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

次にls -la、ファイルを一覧表示し.git-completion.bashます。

2012 年 10 月 13 日編集 - Mark Longairによって解決済み(以下)

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

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

21 に答える 21

353

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

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

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

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

...そして、次の行をに追加します~/.bash_profile

source ~/.git-prompt.sh

次に、PS1含む変数が正常に__git_ps1 '%s'機能するはずです。

于 2012-10-13T07:47:19.237 に答える
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)")\$ '
于 2013-11-26T07:45:36.593 に答える
43

あなたがすべき

$ brew install bash bash-completion git

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

于 2014-08-17T00:10:14.500 に答える
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」を別のものに変更するには、export PS1 行の「os」文字列を変更します。

于 2016-05-06T19:00:44.600 に答える
4

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

于 2013-03-06T17:13:47.763 に答える
2

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

于 2014-05-14T15:33:48.537 に答える
2

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

最初にHomebrewを現在のバージョンに合わせる

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

次に Git を更新します。

醸造アップグレードgit

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

于 2014-11-04T19:40:37.597 に答える
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\]\$ '

必ず正しいパスを使用してください。homebrew を使用して git をインストールし、使用brew list gitして現在のインストールへのパスを取得しました。

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

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

于 2014-01-24T14:42:33.303 に答える
0
curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh -o ~/.git-prompt.bash

[[ -f ~/.git-prompt.bash ]]       && . ~/.git-prompt.bash
# Available GIT_PS1 options/env vars

cat ~/.git-prompt.bash | grep GIT_PS1_ | sed -r 's,^\s*#.*,,' | grep -v -E '^$' | sed -r 's,^.*(GIT_PS1_[A-Z_]+).*,\1,' | sort | uniq | sed -r 's,^(.*)$,export \1=,'
export GIT_PS1_COMPRESSSPARSESTATE=
export GIT_PS1_DESCRIBE_STYLE=
export GIT_PS1_HIDE_IF_PWD_IGNORED=
export GIT_PS1_OMITSPARSESTATE=
export GIT_PS1_SHOWCOLORHINTS=
export GIT_PS1_SHOWDIRTYSTATE=
export GIT_PS1_SHOWSTASHSTATE=
export GIT_PS1_SHOWUNTRACKEDFILES=
export GIT_PS1_SHOWUPSTREAM=
export GIT_PS1_STATESEPARATOR=

for i in $(cat ~/.git-prompt.bash | grep GIT_PS1_ | sed -r 's,^\s*#.*,,' | grep -v -E '^$' | sed -r 's,^.*(GIT_PS1_[A-Z_]+).*,\1,' | sort | uniq); do varname=$i; declare -g ${i}=1; done
# P.S Above is just illustration not all config vars are [0/1].

# For more info: 

cat ~/.git-prompt.bash | sed -r -n -e '1,/^[^\s*#]/p' | head -n -2
于 2021-08-14T09:56:00.377 に答える
0

Mojaveにインストールしたばかりのさらに別のオプション:magicmonty/bash-git-prompt

( brew update)brew install bash-git-promptまたはbrew install --HEAD bash-git-prompt

次に、~/.bash_profileまたはに~/.bashrc

if [ -f "$(brew --prefix)/opt/bash-git-prompt/share/gitprompt.sh" ]; then
  __GIT_PROMPT_DIR=$(brew --prefix)/opt/bash-git-prompt/share
  GIT_PROMPT_ONLY_IN_REPO=1
  source "$(brew --prefix)/opt/bash-git-prompt/share/gitprompt.sh"
fi

私は満足しています。

于 2020-07-01T23:37:44.587 に答える