Git命令获取头部SHA1,并使用-肮脏的;工作区不干净时的后缀
我正在为构建过程添加版本号。对于在开发人员机器上构建的版本,我想知道工作区是否包含构建中可能包含的更改,并在SHA1后面加上Git命令获取头部SHA1,并使用-肮脏的;工作区不干净时的后缀,git,Git,我正在为构建过程添加版本号。对于在开发人员机器上构建的版本,我想知道工作区是否包含构建中可能包含的更改,并在SHA1后面加上-dirty 例如: c2bc0d223739c841c5e810c6c439562aa9d67f5f c2bc0d223739c841c5e810c6c439562aa9d67f5f-dirty 第一种形式可通过以下方式获得: git rev-parse HEAD 但是,当工作区变脏时,我无法确定如何附加-dirty后缀git descripe提供了这一点,但仅限于标
-dirty
例如:
c2bc0d223739c841c5e810c6c439562aa9d67f5f
c2bc0d223739c841c5e810c6c439562aa9d67f5f-dirty
第一种形式可通过以下方式获得:
git rev-parse HEAD
但是,当工作区变脏时,我无法确定如何附加-dirty
后缀git descripe
提供了这一点,但仅限于标记名。我们并没有真正使用标签(最近一次是在400多个版本之前),它们也不像SHA1那样具有决定性
这可以在一个命令中完成,还是我需要执行一些bash脚本?您可以使用--match
和一些永远不会匹配的内容来强制描述不匹配任何标记。这有点粗俗,但它确实有效:
git describe --match=NeVeRmAtCh --always --abbrev=40 --dirty
这仍然是最好的方法吗?我自己似乎不需要
--match
(还有一个--no match
选项)。什么情况下,--match=…
起了作用?@AnthonySottile如果不包括--match=NeVeRmAtCh
输出也将包含标记。您还可以将空字符串传递给--match
选项:--match=”“