Linux 在提示符中配置git分支

Linux 在提示符中配置git分支,linux,git,bash,Linux,Git,Bash,我已经更新了bash文件,以便按照说明显示当前的Git分支。我最后用的是 PS1="\u@\h \W \$(__git_ps1)\$ " 然而 我看不出能够将分支替换为[branch],即在括号中显示分支名称,而不是括号。 原始版本有以下颜色: PS1="\[$GREEN\]\t\[$RED\]-\[$BLUE\]\u\[$YELLOW\]\[$YELLOW\]\w\[\033[m\]\[$MAGENTA\]\$(__git_ps1)\[$WHITE\]\$ " 但是当我用这个的时候,我没有

我已经更新了bash文件,以便按照说明显示当前的Git分支。我最后用的是

PS1="\u@\h \W \$(__git_ps1)\$ "
然而

我看不出能够将分支替换为[branch],即在括号中显示分支名称,而不是括号。 原始版本有以下颜色:

PS1="\[$GREEN\]\t\[$RED\]-\[$BLUE\]\u\[$YELLOW\]\[$YELLOW\]\w\[\033[m\]\[$MAGENTA\]\$(__git_ps1)\[$WHITE\]\$ "
但是当我用这个的时候,我没有看到任何颜色。我怎样才能看到颜色?外壳的标准设置是什么

这项工作:

function parse_git_dirty {
    [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "*"
}
function parse_git_branch {
    git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/"
}
PS1="\[$Blue\][\[$Cyan\]\d\[$Blue\]] "          # Display date
PS1=$PS1"\[$Yellow\]\@:"                        # Display time
PS1=$PS1"\[$BGreen\]\w"                         # Display a green pwd
PS1=$PS1"\[$BCyan\]"'$(parse_git_branch)'       # Display a cyan git-branch
PS1=$PS1"\[$Color_Off\]$ "                      # Turn off color and end prompt
export PS1=$PS1                                                               
它会产生如下结果:

[Thu Sep 18] 12:44 PM:~/repos/test[master*]$
这项工作:

function parse_git_dirty {
    [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "*"
}
function parse_git_branch {
    git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/"
}
PS1="\[$Blue\][\[$Cyan\]\d\[$Blue\]] "          # Display date
PS1=$PS1"\[$Yellow\]\@:"                        # Display time
PS1=$PS1"\[$BGreen\]\w"                         # Display a green pwd
PS1=$PS1"\[$BCyan\]"'$(parse_git_branch)'       # Display a cyan git-branch
PS1=$PS1"\[$Color_Off\]$ "                      # Turn off color and end prompt
export PS1=$PS1                                                               
它会产生如下结果:

[Thu Sep 18] 12:44 PM:~/repos/test[master*]$
1-用括号而不是括号分隔分支名称 下面是.git-prompt.sh文件的相关段落,在现代git版本中,该文件包含_git_ps1函数的定义:

#    3a) Change your PS1 to call __git_ps1 as
#        command-substitution:
#        Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
#        ZSH:  setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
#        the optional argument will be used as format string.
__git_ps1接受一个可选参数,可用于自定义字符串的格式。在您的情况下,您应该使用

PS1="\u@\h \W \$(__git_ps1 '[%s]')\$ "
2-使用颜色 您可以使用问题代码中的颜色,但需要确保定义了问题中的变量。将以下行放在~/.bashrc文件中的某个位置:

找到~/.bashrc文件源后,您将能够使用这些颜色。 例如,以下是提示的简化版本,其中当前分支名称和周围的括号以红色突出显示:

PS1="\W \[$RED\$(__git_ps1 '[%s]')\]\[$RESET\$\] "
1-用括号而不是括号分隔分支名称 下面是.git-prompt.sh文件的相关段落,在现代git版本中,该文件包含_git_ps1函数的定义:

#    3a) Change your PS1 to call __git_ps1 as
#        command-substitution:
#        Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
#        ZSH:  setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
#        the optional argument will be used as format string.
__git_ps1接受一个可选参数,可用于自定义字符串的格式。在您的情况下,您应该使用

PS1="\u@\h \W \$(__git_ps1 '[%s]')\$ "
2-使用颜色 您可以使用问题代码中的颜色,但需要确保定义了问题中的变量。将以下行放在~/.bashrc文件中的某个位置:

找到~/.bashrc文件源后,您将能够使用这些颜色。 例如,以下是提示的简化版本,其中当前分支名称和周围的括号以红色突出显示:

PS1="\W \[$RED\$(__git_ps1 '[%s]')\]\[$RESET\$\] "
您正在使用的_git_ps1函数将格式字符串作为参数。因此,您可以在希望分支名称显示的%s中传入任何内容。例如:

PS1="\u@\h \W \$(__git_ps1 '[%s]')\$ 
对不起,没有关于颜色的线索

您正在使用的_git_ps1函数将格式字符串作为参数。因此,您可以在希望分支名称显示的%s中传入任何内容。例如:

PS1="\u@\h \W \$(__git_ps1 '[%s]')\$ 

关于颜色没有任何线索,抱歉。

关于1,请尝试PS1=\u@\h\W\$\uu git\u PS1[%s]\$。您已经用linux标记和git bash标记标记了您的问题。您是在Windows还是Linux上使用Git?@Jubobs:Linux。这是windows的标签吗?Git Bash是windows版本Git附带的Bash shell。关于2,您能否编辑您的问题以添加彩色版本的提示?如果颜色在原始定义中起作用,则您的问题中一定有错误。关于1,请尝试PS1=\u@\h\W\$\uu git\u PS1[%s]\$。您已使用linux标记和git bash标记标记了您的问题。您是在Windows还是Linux上使用Git?@Jubobs:Linux。这是windows的标签吗?Git Bash是windows版本Git附带的Bash shell。关于2,您能否编辑您的问题以添加彩色版本的提示?如果颜色在原始定义中起作用,那么您的颜色肯定有问题。颜色仍然不起作用。除非我需要在您提到的部分中做些什么:在获取.bashrc文件后。是;寻找.bashrc文件是一个必要的步骤。尝试关闭您的终端/控制台,然后再次打开。然后将获取bashrc,然后重新显示提示。我们取得了一些进展。使用PS1测试所有内容时,我输入的提示和命令都是灰色的now@Jim好啊现在,将cd复制到Git存储库。当前分支应显示为红色。我显示了。所有东西都是灰色的。颜色仍然不起作用。除非我需要在你提到的部分做些什么:在你的.bashrc文件来源之后。是的;寻找.bashrc文件是一个必要的步骤。尝试关闭您的终端/控制台,然后再次打开。然后将获取bashrc,然后重新显示提示。我们取得了一些进展。使用PS1测试所有内容时,我输入的提示和命令都是灰色的now@Jim好啊现在,将cd复制到Git存储库。当前分支应显示为红色。我显示了。一切都是灰色的。