簡體   English   中英

在提示中配置git分支

[英]Configure git branch in prompt

我已經更新了bash文件,以便按照此處的說明顯示當前的Git分支。 我最終使用的是

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

然而...

  1. 我看不到能夠將(branch)替換為[branch] ,即在括號內而不是括號內顯示分支名稱。
  2. 原始版本有顏色:

     PS1="\\[$GREEN\\]\\t\\[$RED\\]-\\[$BLUE\\]\\u\\[$YELLOW\\]\\[$YELLOW\\]\\w\\[\\033[m\\]\\[$MAGENTA\\]\\$(__git_ps1)\\[$WHITE\\]\\$ " 

    但是當我使用它時,我沒有看到任何顏色。 我如何看到顏色,外殼的標准設置是什么?

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文件中:

RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
YELLOW=$(tput setaf 3)
BLUE=$(tput setaf 4)
MAGENTA=$(tput setaf 5)
WHITE=$(tput setaf 7)
RESET=$(tput setaf 0)

在找到~/.bashrc文件后,您將可以使用這些顏色。 例如,這是您的提示符的簡化版本,當前分支名稱(和周圍的括號)以紅色突出顯示:

PS1="\W \[$RED\$(__git_ps1 '[%s]')\]\[$RESET\$\] "

在此處輸入圖片說明

  1. 您正在使用的__git_ps1函數將格式字符串作為參數。 因此,您可以使用%s傳遞任何想要顯示分支名稱的位置。 例如:

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

沒有顏色的線索,對不起。

這有效:

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*]$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM