修改PS1变量,可以模仿zsh的展示效果。
设置常用的git命令别名
# Git 常用命令
alias gco='git checkout'
alias gcma='git commit --amend'
alias gcmm='git commit -m'
alias gaa='git add -A'
# Gerrit push
gpo() {
local branch
branch=$(git symbolic-ref --quiet --short HEAD) || {
printf 'gpo: 当前处于 detached HEAD,无法确定目标分支\n' >&2
return 1
}
git push origin "HEAD:refs/for/$branch"
}
# Prompt Git 分支
git_branch=''
git_branch_prefix=''
find_git_branch() {
local branch
# 每次都先清空,避免保留上一次状态
git_branch=''
git_branch_prefix=''
if branch=$(git symbolic-ref --quiet --short HEAD 2>/dev/null); then
git_branch_prefix='git:'
git_branch="($branch)"
elif git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
git_branch_prefix='git:'
git_branch='(detached)'
fi
}
# 避免重复添加,适用于 PROMPT_COMMAND 为普通字符串的情况
case ";${PROMPT_COMMAND:-};" in
*";find_git_branch;"*) ;;
*)
PROMPT_COMMAND="find_git_branch${PROMPT_COMMAND:+; $PROMPT_COMMAND}"
;;
esac
green=$'\[\e[1;32m\]'
red=$'\[\e[1;31m\]'
blue=$'\[\e[1;34m\]'
magenta=$'\[\e[1;35m\]'
normal_colours=$'\[\e[0m\]'
PS1="${red}➜ ${green}\W ${blue}\${git_branch_prefix}${magenta}\${git_branch}${normal_colours}\\\$ "