git bash有没有办法检查工作树是否干净,这不是不委托的更改或未跟踪的文件?
我正在为我的小组制作一个bash脚本,以使每日重新启动工作分支机构的过程自动化。不洁的工作树是一个普遍的问题。我可以通过执行git checkout .
手动纠正问题。这将大部分时间都具有所需的结果,但并非总是如此,因此我需要能够以编程方式检查工作目录/树是否干净。
git随附的 git-sh-setup
脚本包含许多有用的功能,可用于使用GIT存储库。其中包括require_clean_work_tree
:
require_clean_work_tree () {
git rev-parse --verify HEAD >/dev/null || exit 1
git update-index -q --ignore-submodules --refresh
err=0
if ! git diff-files --quiet --ignore-submodules
then
echo >&2 "Cannot $1: You have unstaged changes."
err=1
fi
if ! git diff-index --cached --quiet --ignore-submodules HEAD --
then
if [ $err = 0 ]
then
echo >&2 "Cannot $1: Your index contains uncommitted changes."
else
echo >&2 "Additionally, your index contains uncommitted changes."
fi
err=1
fi
if [ $err = 1 ]
then
test -n "$2" && echo >&2 "$2"
exit 1
fi
}
这是可以检查git status --porcelain
和/或git status -z
的输出的补充。