在提示中显示git分支名称在屏幕中不起作用

时间:2012-03-15 09:38:45

标签: git ubuntu

我更新了我的.bashrc文件,如下所示:

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$'

它只是查找,我可以在提示符中看到我的分支名称。但是,当我运行" screen" ,我得到

  

" -bash:__ git_ps1:找不到命令"

这可能是什么原因?

8 个答案:

答案 0 :(得分:28)

This blog post说明您必须先添加第source /etc/bash_completion.d/git行,然后才能使用__git_ps1

以下是完整示例:

source /etc/bash_completion.d/git  
export PS1='\w$(__git_ps1 "(%s)") > '

这也可以为分支机构自动完成。

使用该格式,您的提示将类似于(不着色):

~/my-repo(master) > 

答案 1 :(得分:24)

我发现修改现有提示而不是定义新提示更清晰。以下代码段将git分支名称添加到现有提示符($ PS1)。您可以将以下代码段添加到〜/ .bashrc 文件中:

source /etc/bash_completion.d/git (for Ubuntu 12.04 or less)
source /etc/bash_completion.d/git-prompt (for Ubuntu 13.04 and higher)
PS1=$PS1'$(__git_ps1 "(%s) ")'

如果您想使用颜色的分支名称,您也可以这样做: 例如,绿色定义为[\ e [0; 32m]。我们将它添加到git_ps1函数的内部字符串中,然后使用\ [[0m]重置颜色。需要转义的括号表示插入了“特殊”字符。

PS1=$PS1'$(__git_ps1 "\[\e[0;32m\](%s) \[\e[0m\]")'

许多其他颜色定义can be found here

答案 2 :(得分:8)

问题是bash需要作为登录shell运行,以便在默认的cygwin设置中提供此功能。如果你在cygwin bash中运行bash,你会遇到同样的问题。要将屏幕设置为在登录模式下运行bash,请将此行添加到〜/ .screenrc文件中:

shell -bash

答案 3 :(得分:7)

# Add following line to /.bashrc to show Git branch name in ssh prompt
PS1='\[\033[0;31m\]\w\[\033[0;33m\]$(__git_ps1)\[\e[0m\]$ '

\[\033[0;31m\]为红色

\[\033[0;33m\]为黄色

\[\e[0m\]是正常的

答案 4 :(得分:3)

source ~/.bash_profile中添加.bashrc

有同样的问题,它对我有用。

答案 5 :(得分:0)

这是在debian / ubuntu上测试的。

  1. 安装bash-completion
  2. 确保~/.bashrc中存在以下行,且未注释掉。
  3. if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
         . /etc/bash_completion
    fi
    

答案 6 :(得分:0)

如果你没有__git_ps1,你可以使用

git branch --contains HEAD 2>/dev/null

显示与__git_ps1相同的内容。

如果您创建这样的别名:

alias __git_ps1='git branch --contains HEAD 2>/dev/null'

e.g。你用这个命令得到的承诺:

$PS1='[\u@\h \W(`__git_ps1`)]\$'

PS1='[\u@\h \W\[\033[36m\](`__git_ps1`)\[\033[0m\]]\$'

如果你喜欢颜色

使用__git_ps1并使用promt的脚本将完美无缺。

答案 7 :(得分:0)

root:~/project#  -> root:~/project(dev)# 

在您的〜/ .bashrc末尾添加以下代码

force_color_prompt=yes
color_prompt=yes
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt