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

时间:2018-06-13 20:06:30

标签: eclipse git eclipse-cdt

我在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发出GIT_HASH_STRING命令时,会显示version宏。如果我可以在字符串中包含-dirty标志,它可以作为设备运行未发布的固件版本的警告,该固件不与特定提交一致。

1 个答案:

答案 0 :(得分:1)

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

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

git describe --always --dirty
如果工作树或索引相对于当前提交被修改,

将打印出以-dirty结尾的字符串(即,在git status会说某事的情况相同的情况下暂停提交或不提交提交)。

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