Git:如何在 git 日志中包含工作树状态 --pretty=format...?

Git: How to include working tree status in git log --pretty=format...?

我在 Eclipse CDT 预构建步骤中使用以下命令生成一个头文件,其中包含我当前的短 Git 哈希作为字符串宏:

git log --pretty=format:'#define GIT_HASH_STRING "%h"' -n 1 > ../Inc/gitcommit.h

效果很好,但它并不表示工作树的状态。就像 运行 git submodule status 时,如果工作树发生变化,我希望它吐出类似

的内容
a289542-dirty

这可能吗?我检查了 man page 中的 git-log 格式,但没有看到任何看起来相关的内容。

上下文:通过嵌入式设备的 CLI 发出 version 命令时会显示 GIT_HASH_STRING 宏。如果我可以在字符串中包含一个 -dirty 标志,它可以作为一个警告,表明该设备是 运行 与特定提交不一致的未发布固件版本。

git log 命令不检查工作树,因此无法执行此操作。

有很多命令执行检查工作树。一个简单的是 git describe:

git describe --always --dirty
如果相对于当前提交修改了工作树或索引(即,在 git status 会说的相同情况下,

将打印出一个以 -dirty 结尾的字符串某些内容已准备好提交或未准备好提交)。

如果您还想检查子模块,则需要更多。