跳到主要内容

Git 终端提示配置

在日常开发工作中,经常使用git flow工作流,因此会经常涉及到分支间的切换、合并等高频操作,官方提供了一个git终端提示配置脚本,可以在终端中显示当前所在的分支信息,极大提升工作效率

提示

本文档记录适用于 Linux 平台 + Bash 终端的配置

下载 git-prompt.sh 脚本

从 Git 官方仓库下载 contrib/completion/git-prompt.sh 脚本

wget https://raw.githubusercontent.com/git/git/refs/heads/master/contrib/completion/git-prompt.sh
# 或者
curl -O https://raw.githubusercontent.com/git/git/refs/heads/master/contrib/completion/git-prompt.sh

配置环境变量

git-prompt.sh 脚本通过设置环境变量来控制显示的信息内容。主要的环境变量包括:

  • GIT_PS1_SHOWDIRTYSTATE=1:显示工作区是否有未提交的更改(*表示有未暂存的更改,+表示有已暂存的更改)
  • GIT_PS1_SHOWSTASHSTATE=1:显示是否有stash($表示有stash)
  • GIT_PS1_SHOWUNTRACKEDFILES=1:显示是否有未跟踪的文件(%表示有未跟踪文件)
  • GIT_PS1_SHOWUPSTREAM="auto":显示与上游分支的关系(<表示落后,>表示领先,<>表示分叉,=表示同步

Bash 配置

将下载的脚本移动到合适的位置:

sudo mv git-prompt.sh /etc/bash_completion.d/
# 或者放在用户目录下
mv git-prompt.sh ~/.git-prompt.sh

编辑 ~/.bashrc 文件,添加以下内容:

# Git 终端提示配置
source ~/.git-prompt.sh # 如果放在用户目录下
# 或者
# source /etc/bash_completion.d/git-prompt.sh # 如果放在系统目录下

# 设置环境变量
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWSTASHSTATE=1
export GIT_PS1_SHOWUNTRACKEDFILES=1
export GIT_PS1_SHOWUPSTREAM="auto"

# 修改 PS1 提示符
export PS1='\u@\h:\w$(__git_ps1 " (%s)")\$ '

重新加载配置:

source ~/.bashrc

颜色配置

可以为不同的 Git 状态设置颜色:

# 在 .bashrc 中添加
export GIT_PS1_SHOWCOLORHINTS=1

# 自定义 PS1 with colors
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1 " \[\033[01;31m\](%s)\[\033[00m\]")\$ '

效果展示

配置完成后,终端提示符将显示如下信息:

配置前

user@hostname:~/project$ 

配置后

user@hostname:~/project (main *)$ 
user@hostname:~/project (feature/new-feature +)$
user@hostname:~/project (main %<)$

符号含义:

  • *:工作区有未暂存的更改
  • +:暂存区有已暂存的更改
  • %:有未跟踪的文件
  • $:有 stash
  • <:本地分支落后于远程分支
  • >:本地分支领先于远程分支
  • <>:本地分支与远程分支分叉
  • =:本地分支与远程分支同步