以编程方式查找是否标记了git存储库的当前状态

时间:2013-05-16 09:10:28

标签: git

我正在研究一个简单的打包工具,它检查一些内部版本字符串(从源代码中提取)是否与git标记匹配。目标是确保我的程序可以在运行时显示它的版本号,并且该数字将由我的存储库中的标记识别。

基本上我需要检查两件事:

  • 存储库在打包时没有未提交的代码(空git diff)。
  • 标记后没有提交(git describe --tags返回预期的标记名称)

因为它被包含在脚本中我明白我不应该使用git porcelain命令,因此我不应该解析git diff输出或调用git describe。

我怎么能只使用git管道命令呢?

1 个答案:

答案 0 :(得分:2)

要确定工作副本是否干净(没有未提交的更改),请使用git status --porcelain,其输出“在Git版本中保持稳定,无论用户配置如何”。 (有关详细信息,请参阅链接的手册页。)

要查看当前检出的修订是否与您想要的标记相同,您可以使用git rev-parsegit rev-parse HEAD和{{1}必须打印相同的哈希}。参数是标签的名称,后跟一个插入符号,然后是一个开口和一个闭合的大括号;这指的是标记的提交,而不是标记本身(它也是带有哈希的git对象);有关此表示法的更多信息,请参阅the manpage for gitrevisions

相关问题