Show Git dirty status in your Unix bash prompt

本文介绍了一种在 Git Bash 中自定义命令行提示符的方法,通过使用颜色代码和 git 状态信息增强用户体验。该方案能够显示当前工作目录是否干净、分支状态以及与远程分支的对比情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://ambientideas.com/blog/index.php/2010/08/git-bash-prompt/

 

 

        RED = "/[/033[0;31m/]"
     YELLOW = "/[/033[0;33m/]"
  GREEN = "/[/033[0;32m/]"
       BLUE = "/[/033[0;34m/]"
  LIGHT_RED = "/[/033[1;31m/]"
LIGHT_GREEN = "/[/033[1;32m/]"
      WHITE = "/[/033[1;37m/]"
 LIGHT_GRAY = "/[/033[0;37m/]"
 COLOR_NONE = "/[/e[0m/]"

function parse_git_branch {

  git rev-parse --git-dir &> /dev/null
  git_status = "$(git status 2> /dev/null)"
  branch_pattern = "^# On branch ([^${IFS}]*)"
  remote_pattern = "# Your branch is (.*) of"
  diverge_pattern = "# Your branch and (.*) have diverged"
  if [[ ! ${ git_status } = ~ "working directory clean" ]] ; then
state = "${RED}⚡"
  fi
  # add an else if or two here if you want to get more specific
  if [[ ${ git_status } = ~ ${ remote_pattern } ]] ; then
if [[ ${ BASH_REMATCH [1] } == "ahead" ]] ; then
remote = "${YELLOW}↑"
    else
remote = "${YELLOW}↓"
    fi
fi
if [[ ${ git_status } = ~ ${ diverge_pattern } ]] ; then
remote = "${YELLOW}↕"
  fi
if [[ ${ git_status } = ~ ${ branch_pattern } ]] ; then
branch = ${ BASH_REMATCH [1] }
    echo " (${branch})${remote}${state}"
  fi
}

function prompt_func() {
    previous_return_value = $? ;
    # prompt="${TITLEBAR}$BLUE[$RED/w$GREEN$(__git_ps1)$YELLOW$(git_dirty_flag)$BLUE]$COLOR_NONE "
    prompt = "${TITLEBAR}${BLUE}[${RED}/w${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE} "
    if test $previous_return_value -eq 0
    then
PS1 = "${prompt}➔ "
    else
PS1 = "${prompt}${RED}➔${COLOR_NONE} "
    fi
}

PROMPT_COMMAND = prompt_func
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值