Bash 用于在终端中显示 git 用户名的脚本

Bash script to show git username in terminal

有人知道如何在终端中显示 git username 吗?

我正在为分支使用以下 bash 脚本,但是,由于我有多个帐户,因此我也想显示 usernameuser email

顺便说一句,我知道我可以使用 git config --global --list。这个想法是在终端中查看信息而不必每次都检查,就像 branch

parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ ()/'
}

export PS1="\u@\h \W\[3[32m\]$(parse_git_branch)\[3[00m\] $ "

您可以使用 git config --get 获取单个配置值,例如用户名。然后,您可以将其包装在一个函数中:

parse_git_user() {
    git config --get user.email
}

然后您可以将其以您希望的任何格式合并到提示 (PS1) 中。例如:

export PS1="\u@\h \W\[3[32m\]$(parse_git_branch)\[3[00m\] ($(parse_git_user))$ "
# Here -----------------------------------------------------------^

我怀疑您想确保每个项目都得到正确的 user.email? @Mureinik 雄辩地回答了这个问题,但我认为这可能会帮助您或其他人搜索。

与其在提示中使用 user.name,我建议您根据远程 url 进行设置。这样它就可以正常工作™。 每次进入目录时,它都会使用 zsh 挂钩。

autoload -Uz add-zsh-hook
set-git-email() {
  if [ -d .git ]; then
    remote=`git remote -v | awk '/\(push\)$/ {print }'`
    if [[ $remote == git@git.server.com:* ]]; then
       git config user.email user@email.com
    fi   
  fi
}
add-zsh-hook chpwd set-git-email
set-git-email