我正在使用我在网上某处找到的 bash 脚本,它无处不在,用于显示当前的 git 分支。
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)]/"
}
export PS1='\w\[\033[1;37m\]$(parse_git_branch)\[\e[0m\]$ '
这在我的 Mac 上运行良好。但我最近买了一台新 Mac,并通过备份传递了所有数据。然而在我的新机器上,分支状态似乎总是脏的。
# On branch master
nothing to commit, working directory clean
~/Desktop/Work/relearning_rails[master*]$
这是 git status 的结果。我这辈子都想不通。我必须更改此脚本中的某些内容吗?
最佳答案
它正在寻找的字符串是错误的。 parse_git_dirty
应该是这样的:
function parse_git_dirty {
[[ $(git status 2> /dev/null | tail -n1) != "nothing to commit, working directory clean" ]] && echo "*"
}
更好的实现可能是这样的:
function parse_git_dirty {
[[ -n "$(git status -s 2> /dev/null)" ]] && echo "*"
}
此版本将依赖于是否返回任何数据,而不是检查数据。
您可能需要考虑查看 git-prompt.sh
尽管。这是一个更完整的提示。有关如何使用它的说明在脚本本身中。
关于git - bash 始终将 git 分支显示为脏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19013485/