我目前正在使用git-prompt.sh自定义我的bash提示符(PS1),以便在我的bash提示符中显示我的git repo的状态。
This stackoverflow answer非常有帮助,但不完全是我正在寻找的。 p>
我当前的.bashrc显示如下:
[aj@computer-name my_current_working_directory (git-branch-name)]$
我的.gitconfig使用以下内容:
[color "status"]
added = green
changed = yellow
untracked = red
问题是。我如何实现以下目标?
我希望我的bash提示符继续以上面的方式显示,但根据我在.gitconfig中设置的状态颜色更改(git-branch-name)
的颜色
万分感谢!
答案 0 :(得分:2)
我在一篇关于自定义提示的文章中找到了这个代码段。 这不是您正在寻找的,但只需要一些小的修改。 有些颜色未在此代码段中定义,但可以找到here
export PS1=$IBlack$Time12h$Color_Off'$(git branch &>/dev/null;\
if [ $? -eq 0 ]; then \
echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
if [ "$?" -eq "0" ]; then \
# @4 - Clean repository - nothing to commit
echo "'$Green'"$(__git_ps1 " (%s)"); \
else \
# @5 - Changes to working tree
echo "'$IRed'"$(__git_ps1 " {%s}"); \
fi) '$BYellow$PathShort$Color_Off'\$ "; \
else \
# @2 - Prompt when not in GIT repo
echo " '$Yellow$PathShort$Color_Off'\$ "; \
fi)'
此处还有一个链接,其中包含提示
的自定义列表http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
答案 1 :(得分:2)
我今天想要一个类似的功能,我通过修改git-prompt.sh
来实现它,如下所示:
__git_ps1_colorize_gitstring ()
{
if [[ -n ${ZSH_VERSION-} ]]; then
local c_red='%F{red}'
local c_green='%F{green}'
local c_clear='%f'
else
local c_red='\[\e[31m\]'
local c_green='\[\e[32m\]'
local c_clear='\[\e[0m\]'
fi
local branch_color=""
if [ "$w" = "*" ]; then # modified
branch_color="$c_red"
elif [ -n "$u" ]; then # untracked
branch_color="$c_red"
elif [ -n "$i" ]; then
branch_color="$c_green"
else
branch_color="$c_clear"
fi
c="$branch_color$c"
z="$c_clear$z"
w=""
i=""
s=""
u=""
r="$c_clear$r"
}
并将以下内容添加到我的.bashrc
:
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWCOLORHINTS=1
这会更改我的分支名称的颜色,而不会在提示中添加*
,%
或=
字符串。