如何让 git-completion.bash 在 Mac OS X 上运行?

如何让 git-completion.bash 在 Mac OS X 上运行?

我已经关注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

你能告诉我我遗漏了什么吗?

答案1

我使用以下方式安装 git麦金塔在我新安装的 Snow Leopard 上。从 .dmg 映像安装 MacPorts 后,这些将是 Terminal.app 中的命令:

sudo port selfupdate
sudo port install git-core +bash_completion

如果您还希望支持从 SVN 存储库和文档中提取,请使用此行代替第二行:

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

然后将以下内容添加到您的 ~/.profile 或 ~/.bash_profile:

# MacPorts Bash shell 命令补全
如果 [ -f /opt/local/etc/bash_completion ]; 那么
    ./opt/local/etc/bash_completion

或者对于 Mountain Lion 上的 MacPorts 2.1.2 版及以上版本:

# MacPorts Bash shell 命令补全
如果 [ -f /opt/local/etc/profile.d/bash_completion.sh ]; 那么
  。 /opt/local/etc/profile.d/bash_completion.sh

或者对于安装了较新版本 git 的 MacPorts:

如果 [ -f /opt/local/share/git-core/git-prompt.sh ]; 那么
    。 /opt/local/share/git-core/git-prompt.sh

注意:bash_completion.sh 需要 bash 4.1 或更高版本。如果补全不起作用,请尝试echo $BASH_VERSION查看是否是这个问题。如果是,请通过键入进入 MacPorts bash bash,然后再次尝试 git 补全。

答案2

如果你使用 homebrew 安装了 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

检查是否正确安装了 git 的最佳方法是使用 homebrew 执行

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

答案3

您需要做的就是将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 的“完成”版本(如果您已经安装了它,则尤其令人恼火)。

答案4

您需要获取命令完成函数。在 .bashrc_profile 的 PS1 之前添加:

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

相关内容