在 Makefile 中,如果工作树或索引中存在未提交的更改,我想执行某些操作。什么是最清晰和最高效的方法?一个命令,在一种情况下以零的返回值退出,在另一种情况下以非零的返回值退出,将适合我的目的。
我可以运行 `git status` 并将输出通过 `grep` 管道处理,但我觉得应该有更好的方法。
我可以运行 `git status` 并将输出通过 `grep` 管道处理,但我觉得应该有更好的方法。
function git_dirty {
text=$(git status)
changed_text="Changes to be committed"
untracked_files="Untracked files"
dirty=false
if [[ ${text} = *"$changed_text"* ]];then
dirty=true
fi
if [[ ${text} = *"$untracked_files"* ]];then
dirty=true
fi
echo $dirty
}
git status
是一个“瓷器”命令。在脚本中不要使用瓷器命令,因为它们可能会因为Git版本的更改而发生变化。相反,使用“管道”命令。 - spudergit status --porcelain
来更新它(专门用于此目的--一种稳定的格式,可在脚本中解析),可能还可以加上 -z(以 null 代替换行符分隔?),你就可以利用这个想法做些有用的事情了。更多详情请见 https://dev59.com/r2w05IYBdhLWcg3w3lkl - msouth