在Mac终端上显示git状态不使用自定义bash配置文件

时间:2017-05-29 02:57:51

标签: git bash macos github

我想在终端上的git repo中显示我当前的分支状态(如*含义已修改),如下所示。但是,即使我切换到git repo,它也始终显示以下内容。

ᴾᴋᴹɴ iFeelNewsBot master wrong... ↪ 

当我在终端中打开一个新选项卡时,它会显示当前git分支的正确文本呈现。看起来应该如何

ᴾᴋᴹɴ iFeelNewsBot master * ↪ 

我的自定义bash个人资料代码位于

之下
# user name and color
USER_NAME='mr.universe';
TRAINER_TITLE='ᴾᴋᴹɴ'
USER_NAME_COLOR='\[\033[00m\]';
END_COLOR='\e[0m';

# \W = current working path
# \u = user
function parse_git_dirty {
  gitStatus=$(git status 2> /dev/null | tail -n1)
  clean="nothing to commit, working directory clean"
  if [[ -d "./.git" ]]
  then
    [[ $gitStatus != $clean ]] && echo "*" || echo "="
  elif [[ ! -d "./.git" ]]
  then
    echo "wrong...."
  else
    echo "STOP"
  fi
}

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

export PS1="\[\033[40;02m\]$TRAINER_TITLE \W \[\033[36;02m\]\[\033[29;00m\]\$(git branch 2>/dev/null | grep '^*' | colrm 1 2) $(parse_git_dirty) ↪ "

2 个答案:

答案 0 :(得分:0)

您假设git存储库中的每个目录都包含.git,但只有存储库的顶级目录中包含.git目录。因此,第一个if失败,elif检查.git目录是否不存在。看起来结果是真的,它打印'错误'。

答案 1 :(得分:0)

您可以检查您是inside a working tree of a git repo

inside_git_repo="$(git -C $PWD rev-parse --is-inside-work-tree 2>/dev/null)"

if [ "$inside_git_repo" ]; then
  echo "inside git repo"
else
  echo "not in git repo"
fi

这比查找.git文件夹更可靠。