web-dev-qa-db-ja.com

Mac OS X上でgit-completion.bashを動作させるにはどうすればいいですか?

私は 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に入れました

しかし今、私はcdを実行するすべてをこの-bash: __git_ps1: command not foundで取得しています。

足りないものを教えてください。

91
n179911

私は新しい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 Shellコマンドの完了
 if [-f/opt/local/etc/bash_completion];その後
 /opt/local/etc/bash_completion
fi

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

#MacPorts Bash Shellコマンドの完了
 if [-f /opt/local/etc/profile.d/bash_completion.sh];その後
 /opt/local/etc/profile.d/bash_completion.sh
fi

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

if [-f /opt/local/share/git-core/git-Prompt.sh];その後
 /opt/local/share/git-core/git-Prompt.sh
fi

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

65
Lara Dougan

自作を使用してgitをインストールした場合は、MacPortsのアドバイスを少し調整して、これを.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

自作の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
55
grundprinzip

git-completion.bashファイルをユーザーのホームbinディレクトリに置き、次のファイルを.profileまたは.bash_profileファイルに入れるだけです。

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

これがすることはあなたのローカルbinがPATHの中にあることとsourceコマンドがうまくいくことを確かめることです。そしてもちろん、PS1の変更により、現在チェックアウトされているブランチがプロンプトに表示されます。

そのため、MacPortをインストールしてからGITの「完了」バージョンをインストールすることはできません(すでにインストールされている場合は特に不快です)。

26
iansheridan

現在の答えは古いMacPortには正しいが、最新のMacPortにも同じ問題が発生するという新しい問題がある。

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

13
Andy

コマンド補完機能を利用する必要があります。 PS1の前に.bashrc_profileを追加します。

. /opt/local/etc/bash_completion.d/git-completion
6
jtimberman

厄介なことに、これはまだまた壊れています。今回のgitはバージョン1.7.12-1です。人々が補完機能なしでプロンプト機能だけを持つことができるようにするため(これは物事を遅くする可能性があります)、彼らは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

5
studgeek

または 自作

brew install bash-completion git-extras
3
derek73

似たような質問 で解決策が見つかりました。

git-osx-installer にはgit-completion.bashが付属しており、/usr/local/git/contrib/completion/にインストールします。そのファイルをあなたの.bash_profileから入手して__git_ps1を取得するだけです。

2
John Mellor

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
2
haysclark

私はbrewを使っているので、bash_completion内のすべてのものを実行するマスターbash_completion.dスクリプトは提供されないようです。 gitの補完を追加するためにただ1つのスクリプトを実行することを提案するソリューションは拡張可能ではありません、パッケージが異なると異なる補完スクリプトが追加されるので、おそらくそれらすべてを実行したいのです。そこで私は/etc/bashrcの末尾にこれを追加しました(Arch Linuxから改作しました):

# 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
ecloud

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

これをあなたの.bashrcに追加するだけです。

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

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
thekingoftruth

2011年のgrundprinzipによる上記の答えはまだうまくいきますが、今では自作パッケージ bash-completionrepo )は、これをさらに簡単にします。 (これにはgitや他の一般的なツールの補完も含まれます。)

今日のmacOSはBash 3に同梱されていますが、Bash 4を取得するためにbrew install bashを使用することができます。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/

0
Taylor Edmiston