git-completion.bashをMac OS Xで動作させる方法は?


92

私はhttp://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-withoutをフォローして追加git-completion.bashしました/opt/local/etc/bash_completion.d/git-completion

そしてPS1='\h:\W$(__git_ps1 "(%s)") \u\$ '.bashrc_profile に入れます

しかし今、私はこれを-bash: __git_ps1: command not foundすべて私がやっていcdます。

何が欠けているのか教えてもらえますか?


回答:


65

新しいSnow LeopardのインストールにMacPortsを使用してgitをインストールしました。MacPortsが.dmgイメージからインストールされた後、これらはTerminal.appのコマンドになります。

sudo port selfupdate
sudo port install git-core +bash_completion

SVNリポジトリとドキュメントからのプルのサポートも必要な場合は、2行目の代わりにこれを使用します。

sudo port install git-core +bash_completion +doc +svn

次に、以下を〜/ .profileまたは〜/ .bash_profileに追加します。

#MacPorts Bashシェルコマンド補完
if [-f / opt / local / etc / bash_completion]; それから
    。/ opt / local / etc / bash_completion
fi

または、Mountain Lionのバージョン2.1.2以降のMacPortsの場合:

#MacPorts Bashシェルコマンド補完
if [-f /opt/local/etc/profile.d/bash_completion.sh]; それから
  。/opt/local/etc/profile.d/bash_completion.sh
fi

またはgitの新しいバージョンを搭載したMacPortsの場合:

if [-f /opt/local/share/git-core/git-prompt.sh]; それから
    。/opt/local/share/git-core/git-prompt.sh
fi

注:bash_completion.shにはbash 4.1以降が必要です。完了しない場合echo $BASH_VERSIONは、それが問題かどうかを確認してください。その場合は、入力してMacPorts bashを入力しbash、もう一度git completionを試してください。


貼り付けただけで、OPのエラーが表示されます。= \。何が含まれているかをどのように見分けますか?私はbash_completionが供給されthenkません
NullVoxPopuli

git / macport / bash-completionの新しいバージョンでは、プロンプトは別のファイルにあることに注意してください。参照:trac.macports.org/ticket/36334 if [ -f /opt/local/share/git-core/git-prompt.sh ]; then . /opt/local/share/git-core/git-prompt.sh fi
Yehosef

3
4.1以上を/opt/local/etc/profile.d/bash_completion.sh必要としているため$BASH_VERSION、MacPorts 2.1.3を搭載したMac OS X 10.8.3で以下を実行する必要がありました。MacOS Xログインシェルをデフォルト/bin/bash(3.2.48(1)-release)からMacPorts /opt/local/bin/bash(4.2 .42(2)-release)ここで説明したように:stackoverflow.com/a/791244/287984。基本的にif [ `grep /opt/local/bin/bash /etc/shells` ]; then echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash; else echo /opt/local/bin/bash | sudo tee -a /etc/shells; chsh -s /opt/local/bin/bash; fi
ウーヴェギュンター

私にとっては素晴らしい仕事でした。/bin/bashTerminal.appで/opt/local/bin/bashmacportsから+ .bash_profileここで提案されたすべての変更を置き換える必要がありました。
bgs

1
bash 4.1以降に移行するには、次の手順に従ってください。apple.stackexchange.com
70132

55

あなたはMacPortsのアドバイスを少し調整し、これを追加するかもしれないより自作を使用してgitのをインストールした場合、あなた.bash_profile.bashrc

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
. `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi

homebrew istを使用してgitが正しくインストールされているかどうかを確認する最良の方法は、実行することです

brew info git

git bash補完のインストールディレクトリの出力を確認します

Gitの最新バージョン(1.7.12)でも、プロンプトを有効にするには以下が必要です。

if [ -f `brew --prefix`/etc/bash_completion.d/git-prompt.sh ]; then
    . `brew --prefix`/etc/bash_completion.d/git-prompt.sh
fi

詳細については、このスタックのsuperuser.com/a/477749/90231の回答を__git_ps1参照してください。
RichVel

26

必要なことは、git-completion.bashファイルをユーザーのホームbinディレクトリに配置し、次のファイルをユーザー.profileまたは.bash_profileファイルに配置するだけです。

export PATH="$HOME/bin:$PATH"
source ~/bin/git-completion.bash
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '

これは、ローカルビンがPATHにあり、sourceコマンドが処理を開始することを確認します。その後、もちろんPS1の変更により、現在チェックアウトされているブランチがプロンプトに表示されます。

そのため、GITの「完了」バージョンをインストールするMacPortをインストールする必要はありません(既にインストールされている場合は特にイライラします)。



1
あなたのプロンプトを参照の色とそのPS1の事をどのように組み合わせるか疑問に思ったものについては:stackoverflow.com/questions/816790/...
Nickolay

1
より正確には、git-completion.bashはのどこかにある必要があります$PATH。私は/usr/local/bin/既存のものを変更する必要がないように私のものを入れることに決めました$PATH
metavida

13

現在の回答は古いMacPortsに対しては正しいものですが、最新のMacPortsに同じ問題が発生するという新しい問題があります。

現在のbash-completionパッケージ(2.0 r1)が正常に機能するには、少なくともbash 4.1が必要です。通常のOS Xターミナルは/bin/bash3.xのみを使用します。次/opt/local/bin/bash -lのMacPortsのドキュメントで説明されているように、使用するターミナル設定を変更する必要があります。http//trac.macports.org/wiki/howto/bash-completion


これは、macportsを更新した後に問題が発生し始めたため、最も正しい答えです。ターミナルからmacports bashを使用する唯一の欠点は、ターミナルウィンドウを閉じようとすると、実行中のプロセスの終了について警告されることです。これに遭遇しましたか?
ビッチ


5

迷惑なことに、これは再び壊れています。今回は、バージョン1.7.12-1のgitの人々です。完了機能なしでプロンプト機能のみを使用できるようにするため(速度が低下する可能性があります)、bash_completion / gitから独自のファイルgit-prompt.shにプロンプ​​ト機能をリファクタリングしました。

そのため、@ Laraで説明されているようにbash_completionを追加すると、完了しか得られません(タブを押すとタグ/ブランチ名が完成します)。

取得するには__git_ps1あなたがあなたのPS1プロンプトでそれを使用することができます。また、あなたの〜/ .profileにに以下を追加する必要があります。

. /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh

背景はこちら-https://bbs.archlinux.org/viewtopic.php?pid = 1163632#p1163632



3

またはHomebrewで

brew install bash-completion git-extras

2
どうもありがとう。brew install bash-completion git-extrasただし、アンダースコアの代わりにダッシュを使用する必要があります。
simonair


2

Mountain LionおよびMac-Portsの場合、_git_ps1と補完の両方を正常に実行するには、.bash_profileで次の行を使用する必要がありました。

# Bash shell command completion
if [ -f /opt/local/share/doc/git-core/contrib/completion/git-completion.bash ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-completion.bash
fi

if [ -f /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh
fi

1

私はbrewを使用しているため、bash_completionすべてを実行するマスタースクリプトはbash_completion.d提供されていないようです。単一のスクリプトを実行してgit補完を追加することを提案するソリューションは拡張性がありません。異なるパッケージが異なる補完スクリプトを追加するため、おそらくすべてを実行する必要があるためです。したがって、私はこれを(Arch Linuxから適応)の最後に追加しました/etc/bashrc

# source compat completion directory definitions
BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
if [[ -d $BASH_COMPLETION_COMPAT_DIR && -r $BASH_COMPLETION_COMPAT_DIR && \
    -x $BASH_COMPLETION_COMPAT_DIR ]]; then
    for i in $(LC_ALL=C command ls "$BASH_COMPLETION_COMPAT_DIR"); do
        i=$BASH_COMPLETION_COMPAT_DIR/$i
        [[ -f $i && -r $i ]] && . "$i"
    done
fi

1

少なくともXcode 6では、すでに持っていますgit-completion.bash。Xcodeアプリバンドル内にあります。

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

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

これは実際に私のために働いた唯一の答えでした。git br<TAB>
-r00mの

0

Adam K. Johnsonの投稿に加えて

また、次のものを置くことができます...

# MacPorts Bash shell command completion
if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

... / etc / profileで、必要に応じて。

そうすれば、システム上のすべてのユーザーは、ディレクトリ「/opt/local/etc/bash_completion.d/」にインストールされているbash完了スクリプトの恩恵を受けることができます。


0

2011年のgrundprinzipによる上記の答えはまだうまくいきますが、これをさらに簡単にするHomebrewパッケージbash-completionformularepo)があるので、より最近の答えを追加したかったです。(これには、Gitやその他の一般的なツールの補完が含まれます。)

現在、macOSにはBash 3が付属していますがbrew install bash、Bash 4を入手できます。Bash4を実行している場合は、bash-completionの新しい2.xブランチをインストールしてください。

バッシュ4

  1. 実行:

    brew install bash-completion@2
  2. に追加~/.bash_profile

    if [ -f /usr/local/share/bash-completion/bash_completion ]; then
      . /usr/local/share/bash-completion/bash_completion
    fi

バッシュ3

macOSでストックbash 3.xを使用したい場合は、代わりにこれらの指示に従ってください。

  1. 実行:

    brew install bash-completion
  2. に追加~/.bash_profile

    echo "[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion" >> ~/.bash_profile

参照:http : //davidalger.com/development/bash-completion-on-os-x-with-brew/


-2

あなたはおそらくあなたのログイン.bashrcでファイルを調達することを忘れていると思う、あなたは次のようなものを追加することができます:

. ./path/to/your/file.ext

.続けてスペースを使用すると、現在のコンテキストでファイルが実行されます。

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