【问题标题】:How do I update my prompt to show current git branch on linux?如何更新提示以在 linux 上显示当前的 git 分支?
【发布时间】:2017-06-20 21:20:32
【问题描述】:

我正在开发一个 bash 脚本,它将当前分支添加到我的终端提示符中,并在我 cd 进入作为终端中的 git 存储库的文件夹时显示有关此文件夹中最近提交的信息

问题是每当我在该存储库文件夹中使用git checkout 切换分支时,提示不会更新当前分支 这是我的 bash 代码,位于我的 .bashrc 文件中

cd() {
  builtin cd "$@"
  local status=$?
  [ $status -eq 0 ] && PS1="[\e[0;32m${debian_chroot:+($debian_chroot)}\w\e[m]\e[0;35m$(parse_git_branch)\e[m \n$ "
  if [ -d .git ]; then
        echo -e "\nMost Recent Commit"
        git show --summary;

  fi
  return $status
}

【问题讨论】:

    标签: linux git bash github


    【解决方案1】:

    你必须改变你 ~/.bashrc 并导出 PS1 环境变量。

    这是一个 ~/.bashrc 的示例:

    # settings for this script
    MY_DOMAIN=$(hostname -f | sed -e "s/^[^.]*\.//")
    MY_FQDN=$(hostname -f)
    MY_TTY=$(tty| cut -f3- -d/)
    MY_USER=$(whoami)
    
    MY_ROT="\033[31m"
    MY_GRUEN="\033[32m"
    MY_GELB="\033[33m"
    MY_BLAU="\033[34m"
    MY_LILA="\033[35m"
    MY_CYAN="\033[36m"
    MY_WEISS="\033[37m"
    MY_FETT="\033[1m"
    MY_NORMAL="\033[2m"
    MY_RESET="\033[0m"
    
    # user color
    MY_U="$MY_BLAU"
    case $MY_USER in
      developer)
        MY_U="$MY_GRUEN"
        ;;
      root)
        MY_U="$MY_ROT"
        ;;
    esac
    [ $(id -u) -eq 0 ] && MY_U="$MY_U$MY_FETT"
    MY_U="\[$MY_U\]"
    
    # host color
    MY_H="$MY_ROT"
    MY_H="\[$MY_H\]"
    
    # working directory color
    MY_W="\[$MY_CYAN\]"
    
    # tty color
    MY_T="\[$MY_BLAU$MY_FETT\]"
    
    MY_R="\[$MY_RESET\]"
    MY_G="\[$MY_GELB\]"
    MY_GF="\[$MY_GELB$MY_FETT\]"
    GIT_PS1_SHOWDIRTYSTATE=1
    GIT_PS1_SHOWUNTRACKEDFILES=1
    GIT_PS1_SHOWSTASHSTATE=1
    GIT_PS1_SHOWUPSTREAM=verbose
    export PS1="$MY_U\u$MY_R$MY_G@$MY_R$MY_H\h$MY_R$MY_G($MY_R$MY_T$MY_TTY \t$MY_R$MY_G):$MY_R$MY_W\w$MY_R\$(__git_ps1 \"$MY_GF:$MY_R \[$MY_ROT\](%s)$MY_R \")$MY_GF\$$MY_R "
    

    呈现:

    【讨论】:

      【解决方案2】:

      在大多数 linux 发行版上,你可以通过做得到分支。

      echo $(__git_ps1)
      (develop)
      

      如果 __git_ps1 不可用,您必须先获取 git-sh-prompt。在其他发行版上可能是 git-prompt.sh。

      source /usr/lib/git-core/git-sh-prompt
      

      【讨论】:

      • 仅在采购git-prompt.sh之后
      • @JonathanWakely 我在 ubuntu 上没有那个文件,但是如果你的发行版还没有,我已经用正确的文件更新了我的答案。
      【解决方案3】:

      Pro Git book 中所述,您需要 git-prompt.sh 文件(应作为 Git 的一部分安装),然后在您的 .bashrc 中执行以下操作:

      . /usr/share/git-core/contrib/completion/git-prompt.sh
      export GIT_PS1_SHOWDIRTYSTATE=1
      export PS1='\w$(__git_ps1 " (%s)")\$ '
      

      【讨论】:

        【解决方案4】:

        把这个放在你的 ~/.bash_profile 文件中...用当前的 git 分支动态更新你的提示。留下一个git目录空间,得到不同的提示。

        promptFunc() {
        
            branch=$(git branch 2>/dev/null | grep '^*' | colrm 1 2)
            if [ ! $branch ]; then
                PS1=${PWD}"$ "
            else
                PS1="\W: "${branch}"-> "
            fi
        }
        
        export PROMPT_COMMAND="promptFunc"
        

        【讨论】:

          猜你喜欢
          • 2017-07-01
          • 1970-01-01
          • 2010-11-27
          • 2017-07-31
          • 2010-11-20
          • 1970-01-01
          • 2013-05-20
          • 1970-01-01
          相关资源
          最近更新 更多