在Makefile中,如果有未提交的更改(在工作树或索引中),我希望执行某些操作。要做到这一点,最干净、最有效的方法是什么?如果命令在退出时返回值为零,而在另一种情况下返回值为非零,则符合我的目的。
我可以运行git status
并通过grep
管道输出,但我觉得一定有更好的方法。
发布于 2012-02-22 19:10:27
虽然其他的解决方案是非常彻底的,但如果你想要一些非常快速和肮脏的东西,可以尝试这样的方法:
[[ -z $(git status -s) ]]
它只检查状态摘要中是否有任何输出。
发布于 2010-10-07 13:28:59
如果有任何更改,git diff --exit-code
将返回非零值;git diff --quiet
也是如此,没有输出。由于您希望检查工作树和索引,因此使用
git diff --quiet && git diff --cached --quiet
或
git diff --quiet HEAD
其中任何一个都会告诉您是否有未提交的更改处于暂存状态。
发布于 2016-11-11 03:31:14
扩展@Nepthar的答案:
if [[ -z $(git status -s) ]]
then
echo "tree is clean"
else
echo "tree is dirty, please commit changes before running this"
exit
fi
https://stackoverflow.com/questions/3878624
复制相似问题