git status check
if [ -n "$(git status --porcelain)" ]; then
git diff
for f in $(git ls-files --modified); do
echo "::warning ::$f may be outdated"
done
for f in $(git ls-files --others --exclude-standard); do
echo "::warning ::$f may be untracked"
done
exit 1
fi
这段代码是一个 Bash 脚本,通常用于 Git 工作流程中的 CI/CD 流程中,主要作用是检查 Git 仓库的状态并生成相应的警告信息。
具体来说,它做了以下几件事情:
-
执行
git status --porcelain
命令来获取 Git 仓库的状态信息,如果该命令的输出非空,则表示有文件被修改或添加到了暂存区或工作目录中。 -
如果有文件被修改或添加,则执行
git diff
命令来获取这些文件的具体差异信息,并遍历每个被修改的文件,用echo
命令输出一个警告信息,格式为::warning ::$f may be outdated
,其中$f
表示当前遍历到的文件名。 -
执行
git ls-files --others --exclude-standard
命令来获取所有未被 Git 跟踪的文件,遍历每个未被跟踪的文件,用echo
命令输出一个警告信息,格式为::warning ::$f may be untracked
,其中$f
表示当前遍历到的文件名。 -
最后使用
exit 1
命令结束整个脚本并返回非零值,表示 Git 仓库的状态不符合要求,需要采取相应的措施来处理。这个值可以在 CI/CD 流程中被捕获并处理,比如通知开发人员或终止构建流程。
测试例子:
当我只是修改一个文件, 会报::warning ::$f may be outdated
当我额外创建一个文件test,会报::warning ::test may be untracked