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 文件.