Git Bash 脚本检查工作树
Git Bash Script Check Working Tree
Git Bash 中是否有方法检查工作树是否干净,即没有未提交的更改或未跟踪的文件?
我正在为我的团队编写一个 bash 脚本,以自动执行日常工作分支变基过程。不干净的工作树是一个常见的问题。我可以通过执行 git checkout .
手动更正问题。这在大多数情况下都会产生预期的结果,但并非总是如此,因此我需要能够让我的脚本以编程方式检查工作 directory/tree 是否干净。
git-sh-setup
script included with git contains a number of useful functions for working with git repositories. Among them is 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 : You have unstaged changes."
err=1
fi
if ! git diff-index --cached --quiet --ignore-submodules HEAD --
then
if [ $err = 0 ]
then
echo >&2 "Cannot : Your index contains uncommitted changes."
else
echo >&2 "Additionally, your index contains uncommitted changes."
fi
err=1
fi
if [ $err = 1 ]
then
test -n "" && echo >&2 ""
exit 1
fi
}
如果您需要更具体地了解当前状态,还可以检查 git status --porcelain
and/or git status -z
的输出。
Git Bash 中是否有方法检查工作树是否干净,即没有未提交的更改或未跟踪的文件?
我正在为我的团队编写一个 bash 脚本,以自动执行日常工作分支变基过程。不干净的工作树是一个常见的问题。我可以通过执行 git checkout .
手动更正问题。这在大多数情况下都会产生预期的结果,但并非总是如此,因此我需要能够让我的脚本以编程方式检查工作 directory/tree 是否干净。
git-sh-setup
script included with git contains a number of useful functions for working with git repositories. Among them is 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 : You have unstaged changes."
err=1
fi
if ! git diff-index --cached --quiet --ignore-submodules HEAD --
then
if [ $err = 0 ]
then
echo >&2 "Cannot : Your index contains uncommitted changes."
else
echo >&2 "Additionally, your index contains uncommitted changes."
fi
err=1
fi
if [ $err = 1 ]
then
test -n "" && echo >&2 ""
exit 1
fi
}
如果您需要更具体地了解当前状态,还可以检查 git status --porcelain
and/or git status -z
的输出。