我有一个bash PS1,如果我的git目录已更改,则变为红色,如果未更改,则变为绿色。
if [ $? -eq 0 ]; then \
echo "$(echo `git status` | grep "nothing to commit" > /dev/null 2>&1; \
if [ "$?" -eq "0" ]; then \
# @4 - Clean repository - nothing to commit
echo "\n'$Green'"$(__git_ps1 "(%s)"'$Color_Off'); \
else \
# @5 - Changes to working tree
echo "\n'$IRed'"$(__git_ps1 "(%s)"'$Color_Off'); \
fi)\$ "; \
fi)'
这个功能很好用!但问题在于,在某些工作目录中,由于存在许多更改和大量差异,速度非常慢。
有没有更好的方法来获取git状态布尔值(是更改还是未更改),而不需要全量更新?
我已经尝试了git status --short
或git status --porcelain
,但仍然很慢。