git rev-parse
做了什么?
我已经阅读了手册页,但它提出的问题多于答案。比如:
选择按摩参数
按摩?这是什么意思?
我用作修订说明符的解析器(对SHA1),例如
git rev-parse HEAD^
或
git rev-parse origin/master
这是命令的目的吗?如果没有,使用它来实现这一点是否正确?
答案 0 :(得分:192)
git rev-parse
是一个主要用于操作的辅助plumbing
命令。
git rev-parse
的一个常见用法是在给定修订说明符的情况下打印SHA1哈希值。此外,它还有各种格式化输出的选项,例如--short
,用于打印较短的唯一SHA1。
还有其他用例(在脚本和基于git构建的其他工具中),我用过:
--verify
验证指定的对象是否是有效的git对象。--git-dir
用于显示.git
目录的abs / relative路径。--is-inside-git-dir
检查您当前是否在存储库中,或使用--is-inside-work-tree
检查您是否在工作树中--is-bare-repository
--branches
),标签(--tags
)和参考号也可以根据遥控器进行过滤(使用--remote
)--parse-opt
规范化脚本中的参数(类似于getopt
)并打印可与eval
Massage
只是意味着可以将信息从一种形式转换为另一种形式,即转换命令。这些是我能想到的一些简单例子:
A..B
或git log
的修订范围git diff
到基础管道命令的等效参数B ^A
答案 1 :(得分:74)
为了详细说明命令名rev-parse
的词源,Git始终在管道命令中使用术语rev
作为" revision"的缩写。通常意味着提交的40个字符的SHA1哈希值。例如,命令rev-list
打印一个40-char提交哈希的列表,用于分支或其他任何内容。
在这种情况下,名称可能会扩展为parse-a-commitish-to-a-full-SHA1-hash
。虽然该命令具有Tuxdude的答案中提到的几个辅助功能,但它的同名似乎是将用户友好的引用(如分支名称或缩写哈希)转换为最明确的40个字符的SHA1哈希的用例。许多编程/管道用途。
我知道我认为这是"反向解析"在我弄明白之前已经有一段时间了,并且在理解这些术语时遇到了同样的困难"按摩"和"操纵" :)
无论如何,我发现这个"解析到修订版"这是一种令人满意的思考方式,也是一种可靠的概念,可以在我需要这种东西时将这个命令铭记于心。经常在脚本编写Git中,您将用户友好的提交引用作为用户输入,并且通常希望在收到后尽快将其解析为经过验证且明确无误的工作引用。否则,输入翻译和验证往往会通过脚本激增。
答案 2 :(得分:18)
git rev-parse
也适用于使用--abbrev-ref标志获取当前分支名称,如:
git rev-parse --abbrev-ref HEAD
答案 3 :(得分:1)
TLDR:
它可以帮助您找出当前 HEAD 的提交 ID
git rev-parse HEAD
或者如果你想要更短的提交
git rev-parse --short HEAD