我正在开发一个bash脚本,它将当前分支添加到我的终端提示符上,并在我进入终端中的git存储库的文件夹时显示有关此文件夹中最新提交的信息
问题是每当我在该存储库文件夹中使用git checkout
切换分支时,提示不会更新当前分支
这是我的.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
}
答案 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 "
答案 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"