在 git st 时检查是否需要 push

05 Sep 2013

2013-09-08 update: <<EOF

重新思考了一下,之前忘了push的情况是本地的diff很多,使 git status 中提示本地代码超前或者落后于远端的提示滚出当前屏幕(当时使用tmux切分了窗口比较矮)。那么现在这个办法是不能解决问题的。更经济的办法应该是将那句话(‘ahead of’)移至 git status 最后.

新的脚本 git-st

#!/usr/bin/env bash

git status
git status | grep --color=auto '# Your branch is .*'

EOF

以前常常有修改但忘了提交, 使用 git 之后, 又经常提交了但忘了 git push. 为了避免再犯这个错误, 我把 git st 改成还检查是否需要 push.

把这段代码保存成 git-synced 放在 $PATH 里, 然后在 ~/.gitconfig[alias] 部分加上一句 st = synced 即可

#!/usr/bin/env bash

# assume that all local branches should be pushed to 'origin'
REMOTE=origin

if ! git diff-index --quiet HEAD --; then
        git status
else
        if git remote | grep -q $REMOTE; then
                op=$(git remote show $REMOTE)
                if [[ "$op" =~ "fast-forwardable" ]]; then
                        echo you NEED a push
                elif [[ "$op" =~ "local out of date" ]]; then
                        echo you MAY NEED a push
                fi
        fi
fi

可以在 这里 访问我的 rc 文件.

comments powered by Disqus