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

Dre*_*kes 11 git

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

例如:

c2bc0d223739c841c5e810c6c439562aa9d67f5f
c2bc0d223739c841c5e810c6c439562aa9d67f5f-dirty
Run Code Online (Sandbox Code Playgroud)

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

git rev-parse HEAD
Run Code Online (Sandbox Code Playgroud)

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

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

CB *_*ley 18

您可以使用--match永远不会匹配的内容强制描述与任何标记不匹配.它有点hackish但它的工作原理:

git describe --match=NeVeRmAtCh --always --abbrev=40 --dirty
Run Code Online (Sandbox Code Playgroud)

  • 您还可以将空字符串传递给 `--match` 选项:`--match=""` (2认同)