我正在研究一个简单的打包工具,它检查一些内部版本字符串(从源代码中提取)是否与git标记匹配。目标是确保我的程序可以在运行时显示它的版本号,并且该数字将由我的存储库中的标记识别。
基本上我需要检查两件事:
git diff
)。git describe --tags
返回预期的标记名称)因为它被包含在脚本中我明白我不应该使用git porcelain命令,因此我不应该解析git diff输出或调用git describe。
我怎么能只使用git管道命令呢?
答案 0 :(得分:2)
要确定工作副本是否干净(没有未提交的更改),请使用git status --porcelain
,其输出“在Git版本中保持稳定,无论用户配置如何”。 (有关详细信息,请参阅链接的手册页。)
要查看当前检出的修订是否与您想要的标记相同,您可以使用git rev-parse
:git rev-parse HEAD
和{{1}必须打印相同的哈希}。参数是标签的名称,后跟一个插入符号,然后是一个开口和一个闭合的大括号;这指的是标记的提交,而不是标记本身(它也是带有哈希的git对象);有关此表示法的更多信息,请参阅the manpage for gitrevisions