在git存储库中工作时,我正在使用本指南在gnome终端(Ubuntu 15.10)中显示分支名称。基于以上内容,我现在在〜/ .bashrc文件中具有以下内容:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes 


...

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


结果,我现在得到:



所以它可以工作。但是,为什么我的user @ host的颜色被删除了?而且我也希望分支名称应该是彩色的。在它看起来像这样之前:



更新:
我现在尝试使用本指南:

https:// coderwall .com / p / fasnya / add-git-branch-name-bash-prompt

将此添加到.bashrc中:

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ ()/'
}
export PS1="\u@\h \[3[32m\]\w\[3[33m\]$(parse_git_branch)\[3[00m\] $ "


并且有效:



.bashrc中的通知我也有这个(默认):

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes


我尚未找到该代码段给出正确结果而其他版本却未给出正确结果的原因。对此有任何输入吗?

这是我的.bashrc的版本,该版本启用了旧代码段,但无法使用:

http://pastebin.com/M8kjEiH3

评论

以前是否对force_color_prompt不加注释?

是的,我尝试了未评论和评论相同的结果。上面发布的指南说应该将其注释掉。

您可以发布完整的.bashrc吗? IIRC默认的.bashrc不启用颜色提示,因此您必须将其更改为显示颜色。这取决于您所做的更改。

看看第64行,它应该告诉您为什么取消注释force_color_prompt无效。

@ u123不必担心默认的.bashrc。如果您搞砸了,总是可以从/etc/skel/.bashrc获取原始文件。

#1 楼

此代码段:

 # Add git branch if its present to PS1

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


是要替换默认的提示定义:

 if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$ '
fi
 


结尾为:

unset color_prompt force_color_prompt


您发布的.bashrc显示您将其添加到默认提示定义和unset color_prompt force_color_prompt(第64行)之后。

用代码段替换默认提示定义,或将您的~/.bashrc保留原样并添加注释默认提示定义以及#64行上的unset color_prompt force_color_prompt


因此.bashrc的一部分可能看起来像

parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/()/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[01;31m\] $(parse_git_branch)\[3[00m\]$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)$ '
fi
# THE SIX LINES BELOW are the default prompt and the unset (which were in the original .bashrc)
#if [ "$color_prompt" = yes ]; then
#    PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]$ '
#else
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$ '
#fi
#unset color_prompt force_color_prompt




评论


验证以上内容,您是正确的。我将坚持使用新版本的代码段,因为它无需修改bashrc文件的默认部分即可工作。

–u123
16年2月7日在8:51

它无法为分支名称添加颜色。

– Avinash Raj
16-2-7在10:11



@AvinashRaj在/etc/skel/.bashrc中使用默认〜/ .bashrc的副本进行测试,您的〜/ .bashrc中可能会有一些干扰。

–kos
16-2-7在10:15



如果颜色不可见,请取消注释force_color_prompt =是(第48行)。

–阿迪尔·阿巴西(Adil Abbasi)
17年7月7日在6:05

要根据分支的状态为分支着色,可以使用git本身提供的本地git-prompt脚本。

– Niket Pathak
18年1月15日在11:42

#2 楼

Ubuntu:在终端上显示分支名称
将以下行添加到〜/ .bashrc文件中
# Show git branch name
force_color_prompt=yes
color_prompt=yes
parse_git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/()/'
}
if [ "$color_prompt" = yes ]; then
 PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[01;31m\]$(parse_git_branch)\[3[00m\]$ '
else
 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)$ '
fi
unset color_prompt force_color_prompt

使用以下命令重新加载.bashrc文件:
$ source ~/.bashrc


评论


这对我来说适用于18.04!

–cbloss793
19年1月7日在20:18

谢谢。使用:Ubuntu 18.04.1 LTS

–比什瓦斯·米什拉(Bishwas Mishra)
19年1月10日在6:38

它在elementaryOS 0.4 Loki上也对我有用。使用sudo nano〜/ .bashrc命令打开〜/ .bashrc十分简单,将代码复制到文件末尾,保存,退出并使用上面粘贴的代码重新加载〜/ .bashrc。非常感谢 ;)

– JuanGómezCarrillo
19年1月23日在22:53



适用于Redhat 6.8!

– BeeGee
19-2-22在15:18

这有效并保持了颜色! (Ubuntu 18.04)

– warkentien2
19年2月26日在23:39

#3 楼

现在,我遵循了这个
https://gist.github.com/eliotsykes/47516b877f5a4f7cd52f并进行了工作,
到目前为止,尽管我正计划进一步对其进行自定义。


在终端

mkdir ~/.bash


将原始git-prompt.sh文件从git contrib复制到~/.bash
目录:
https: //github.com/git/git/blob/master/contrib/completion/git-prompt.sh

~/.bashrc~/.bash_profile内(选择文件
通常放置任何bash定制/ setup),添加以下行:

source ~/.bash/git-prompt.sh # Show git branch name at command prompt
export GIT_PS1_SHOWCOLORHINTS=true # Option for git-prompt.sh to show branch name in color

# Terminal Prompt:
# Include git branch, use PROMPT_COMMAND (not PS1) to get color output (see git-prompt.sh for more)
export PROMPT_COMMAND='__git_ps1 "\w" "\n\$ "' # Git branch (relies on git-prompt.sh)


只要您在git repo内,您的Bash提示符现在就应该显示
当前的git分支颜色表示它是否未提交



评论


简单又工作!

–丹妮
19年2月12日在11:05

这应该是公认的答案,因为它清晰,简洁并且可以完成工作,并且也可以在其他平台上使用。

–miguelmorin
19年5月15日在10:48

〜/ .bashrc末尾的以下内容只是附加到发行版的默认颜色提示后:export PROMPT_COMMAND ='__ git_ps1“'$ {PS1%???}}'”“ \ n \\\ $”'

–达尼洛·罗阿西奥(Danilo Roascio)
20 Nov 24在15:41



#4 楼

快速破解:


将其添加到~/.bashrc中:

 parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/()/'
}

export PS1="\u@\h \[\e[32m\]\w \[\e[91m\]$(parse_git_branch)\[\e[00m\]$ "
 



重新启动终端或源~/.bashrc



更多详细信息:
https://medium.com/@thucnc /如何显示当前git分支在bash提示中的颜色380d05a24745

#5 楼

将以下行添加到~/.bashrc

export GIT_PS1_SHOWDIRTYSTATE=true
export GIT_PS1_SHOWUNTRACKEDFILES=true

export PS1='\[3[32m\]\u@\h\[3[00m\]:\[3[34m\]\w\[3[31m\]$(__git_ps1)\[3[00m\]$ '


评论


在Ubuntu 18.04上工作

–范妮
19年11月8日在16:06

#6 楼

转到主文件夹

,单击Ctrl + h以显示隐藏的文件。

打开。 bashrc文件,最后粘贴下一个:

parse_git_branch() {
     git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ ()/'
}
export PS1="\u@\h \[3[32m\]\w\[3[33m\]$(parse_git_branch)\[3[00m\] $ "


如果您打开了终端,请关闭并再次打开。享受吧!

评论


您好,我尝试过,它仅在切换超级用户的地方有效,您能告诉我如何始终启用吗?

–丹尼斯·斯蒂芬诺夫(Denis Stephanov)
18年11月24日在16:37

#7 楼

我的问题是我没有在

Terminal→Edit→Profile Preferences→Command
中启用选项

作为登录shell运行命令。

#8 楼


parse_git_branch

替换为
parse_git_branch 2>/dev/null


用PS1定义替换
,从此幸福快乐。

#9 楼

为什么要麻烦使用sed?如...

/ dev / null | sed -e'/ ^ [^] / d'-e's /(。*)/(\ 1)/'

更容易使用:

git branch --show-current

它输出当前分支,没有多余的字符!

#10 楼

sudo vi .bashrc



在文件的按钮下方编写代码:

git_branch() {
 git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/()/'
}
export PS1="\[3[1;36m\]\u\[3[1;31m\]@\[3[1;32m\]\h:\[3[1;35m\]\w\[3[1;31m\]$\[3[0m\]$(git_branch)$ "


source .bashrc