如何更新我的提示以在linux上显示当前的git分支?

时间:2017-02-03 13:22:15

标签: linux git bash github

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

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

上的bash代码
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
}

4 个答案:

答案 0 :(得分:2)

你必须改变你〜/ .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 "

呈现: enter image description here

答案 1 :(得分:2)

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)")\$ '

答案 2 :(得分:0)

在大多数Linux发行版中,你可以通过这样做来获得分支。

echo $(__git_ps1)
(develop)

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

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

答案 3 :(得分:0)

将这个放在〜/ .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"