如果工作空间不干净,则使用Git命令获取带有“-dirty”后缀的HEAD SHA1

时间:2014-01-09 10:15:35

标签: git

我正在为构建过程添加版本号。对于在开发人员计算机上构建的版本,我想知道工作空间是否包含可能已包含在构建中的更改,并将SHA1后缀为-dirty

例如:

c2bc0d223739c841c5e810c6c439562aa9d67f5f
c2bc0d223739c841c5e810c6c439562aa9d67f5f-dirty

第一种形式可以通过以下方式获得:

git rev-parse HEAD

但是,当工作空间变脏时,我无法确定如何附加-dirty后缀。 git describe提供了此功能,但仅限于标记名称。我们并没有真正使用标签(最后一次是400左右的修改),它们并不像SHA1那样具有决定性。

这可以在一个命令中完成,还是需要做一些bash脚本?

1 个答案:

答案 0 :(得分:15)

您可以将--match用于永远不会匹配的强制描述与任何标记不匹配的内容。这有点hackish但它的确有效:

git describe --match=NeVeRmAtCh --always --abbrev=40 --dirty