在 Shell 提示符中显示 Git 分支名称的方法

PS1介绍

PS1介绍

配置

获取branch名称

通过git branch获取(不推荐)

git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'

通过.git/HEAD 获取(推荐)

vi .git/HEAD
############
ef: refs/heads/dev
############

配置.bashrc

vim ~/.bashrc
######################
#获取branch名称
find_git_branch () {
    local dir=. head
    until [ "$dir" -ef / ]; do
        if [ -f "$dir/.git/HEAD" ]; then
            head=$(< "$dir/.git/HEAD")
                if [[ $head = ref:\ refs/heads/* ]]; then
                    git_branch="${head#*/*/}"
                elif [[ $head != '' ]]; then
                    git_branch="detached"
                else
                    git_branch="unknow"
                fi
                git_name_left="git:("
                git_name_right=")"
                return
            fi
        dir="../$dir"
    done
    git_branch=''
    git_name_left=""
    git_name_right=""
}

#将这个函数加入到 PROMPT_COMMAND 中,保证 Bash 在创建 prompt 之前调用这个函数取得分支名称:
PROMPT_COMMAND="find_git_branch; $PROMPT_COMMAND"

#颜色配置
black=$'\[\e[1;30m\]'
red=$'\[\e[1;31m\]'
green=$'\[\e[1;32m\]'
yellow=$'\[\e[1;33m\]'
blue=$'\[\e[1;34m\]'
magenta=$'\[\e[1;35m\]'
cyan=$'\[\e[1;36m\]'
white=$'\[\e[1;37m\]'
normal=$'\[\e[m\]'

#配置PS1
PS1="$green$cyan\W$blue \$git_name_left$red\$git_branch$blue\$git_name_right\$ $normal"
####################

source ~/.bashrc

Git仓库效果:
在 Shell 提示符中显示 Git 分支名称的方法

非Git仓库效果
这里写图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值