在Ubuntu终端中我想根据git的状态改变颜色--瓷器

g9icjywg  于 2023-03-11  发布在  Git
关注(0)|答案(1)|浏览(134)

当我在本地存储库中添加一些更改时,我希望在按下回车键时颜色从绿色变为红色。这似乎不适用于我的代码
我的.bashrc中有此代码

function parse_git_branch () {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

function git_status_color() {
  local git_status="$(git status --porcelain)"
  if [ -n "$git_status" ]; then
    echo -e "$RED"
  else
    echo -e "$GREEN"
  fi
}

 
RED="\[\033[01;31m\]"
YELLOW="\[\033[01;33m\]"
GREEN="\[\033[01;32m\]"
BLUE="\[\033[01;34m\]"
NO_COLOR="\[\033[00m\]"

PS1="$GREEN\u$NO_COLOR:$BLUE\w $(git_status_color)\$(parse_git_branch)$NO_COLOR\$ "
pod7payv

pod7payv1#

此代码似乎有效

function update_git_status() {
  GIT_STATUS=$(git status --porcelain)
}

RED="\033[01;31m"
GREEN="\033[01;32m"
BLUE="\[\033[01;34m\]"
NO_COLOR="\[\033[00m\]"

function git_status_color() {
  if [[ $GIT_STATUS ]]; then
    echo -en $RED
  else
    echo -en $GREEN
  fi
}

function git_remote_status() {
  if [[ $(git rev-parse --is-inside-work-tree 2>/dev/null) ]]; then
    if [[ $(git cherry -v) ]]; then
      echo -en " \u21E7"
    fi
    if [[ $(git rev-list --left-right --count @{u}...HEAD | awk '{print $1}') -gt 0 ]]; then
      echo -en " \u21E9"
    fi
  fi
}

function parse_git_branch () {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}

PS1="$GREEN\u$NO_COLOR:$BLUE\w $NO_COLOR\$(git_status_color)\$(parse_git_branch)\[$NO_COLOR\]\$(git_remote_status) \$ "

PROMPT_COMMAND="update_git_status; $PROMPT_COMMAND"

相关问题