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

3
有没有人知道如何在终端中显示git用户名?
我正在使用以下bash脚本来获取分支,但由于我有多个帐户,我还想显示用户名或用户电子邮件。
顺便说一句,我知道可以使用“git config --global --list”命令。我想要的是能够在终端中看到这些信息,而不必每次都进行检查,就像分支一样。
parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

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

请注意,通常情况下,交互式 shell 配置(与脚本开发相对)更受欢迎在我们的姊妹站点 [unix.se] 上。 - Charles Duffy
2个回答

5

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

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

然后你可以将它以任何你想要的格式加入到提示符(PS1)中。例如:

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

2

我猜你想确保在每个项目中获得正确的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 $2}'`
    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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接