有一些脚本在检查更改时不能正常工作。
我是这样尝试的:
VN=$(git describe --abbrev=7 HEAD 2>/dev/null)
git update-index -q --refresh
CHANGED=$(git diff-index --name-only HEAD --)
if [ ! -z $CHANGED ];
then VN="$VN-mod"
fi
是否有某种类型的布尔检查自上次提交以来是否有更改,或者我如何真正测试本地存储库是否有新的更改?
我做这一切都是为了一个版本创建脚本(我在这里的某个地方找到的)。
发布于 2011-02-28 23:27:11
你所做的几乎是可行的:你应该引用$CHANGED
,如果它是空的,那么-z
测试为空,这意味着没有变化。你的意思是:
if [ -n "$CHANGED" ]; then
VN="$VN-mod"
fi
引用自Git的GIT-VERSION-GEN
git update-index -q --refresh
test -z "$(git diff-index --name-only HEAD --)" ||
VN="$VN-dirty"
看起来你是在抄袭,但你只是忘记了引用的细节。
当然,您也可以这样做:
if git diff-index --quiet HEAD --; then
# No changes
else
# Changes
fi
或者,如果你只关心“某些东西已经改变”的情况:
if ! git diff-index --quiet HEAD --; then
VN="$VN-mod"
fi
使用--quiet
的好处是它可以在遇到单个差异时立即停止处理,因此它可能不必检查整个工作树。
发布于 2014-08-06 07:11:28
使用git status
cd /git/directory
if [[ `git status --porcelain` ]]; then
# Changes
else
# No changes
fi
发布于 2020-06-05 18:55:12
这也行得通:
if [ $(git status --porcelain | wc -l) -eq "0" ]; then
echo " Git repo is clean."
else
echo " Git repo dirty. Quit."
exit 1
fi
https://stackoverflow.com/questions/5143795
复制相似问题