git rev-parse是做什么的?
git rev-parse做什么的?
我已阅读手册页,但提出了更多的问题,而不是答案。 像:
挑出并按摩参数
按摩 ? 那是什么意思?
我用作parsing器(对SHA1)的修订说明符,如
git rev-parse HEAD^
要么
git rev-parse origin/master
这是命令的目的吗? 如果没有,甚至正确地使用它来实现这一目标?
git rev-parse是一个主要用于操作的辅助plumbing命令。
git rev-parse一个常见用法是给出一个修订说明符来打印SHA1哈希。 此外,它还有各种选项来格式化此输出,例如--short打印较短的唯一SHA1。
还有其他的用例(在git之上构build的脚本和其他工具中),我用它们:
- – validation确认指定的对象是一个有效的git对象。
-
--git-dir显示.git目录的绝对/相对path。 - 使用
--is-inside-git-dir或在工作树内使用--is-inside-work-tree检查当前是否在存储库中 - 使用
--is-bare-repository检查回购是否裸露 - 打印SHA1散列的分支( –
--branches),标签( –--tags)和裁判也可以基于远程过滤(使用--remote) -
--parse-opt在脚本中对参数进行规范化(类似于getopt)并打印一个可以与eval一起使用的输出string
Massage只是意味着可以将信息从一种forms转换为另一种forms,即转换命令。 这些是我能想到的一些简单的例子:
- 一个分支或标签名称放入到它所指向的提交的SHA1中,以便它可以被传递给只接受提交的SHA1值的pipe道命令。
- 修改范围
A..B用于将git log或git diff作为底层pipe道命令的等价参数作为B ^A
为了详细说明命令名称rev-parse的词源,Git在“plumbing命令”中一直使用术语“ rev ”作为“revision”的缩写,通常表示提交的40个字符的SHA1哈希。 例如命令rev-list打印一个分支的40个字符提交哈希列表或其他。
在这种情况下,名称可能会扩展为parse-a-commitish-to-a-full-SHA1-hash 。 虽然该命令具有Tuxdude答案中提到的几个辅助function,但它的同名似乎是将用户友好的引用(如分支名称或缩写的散列)转换为明确的40个字符的SHA1散列(对于许多编程/pipe道工程最为有用)目的。
我知道我认为这是“逆向分析”的东西一段时间之后,我才明白,并有同样的麻烦理解术语“按摩”和“操纵”:)
无论如何,我觉得这个“修正parsing”的概念是一个令人满意的思考方式,也是一个可靠的概念,当我需要这样的事情的时候能够把这个命令带入脑海。 通常在编写Git脚本时,您会将用户友好的提交引用作为用户input,通常希望尽快将其parsing为validation且明确的工作引用。 否则input翻译和validation往往会通过脚本激增。
git rev-parse同样适用于使用–abbrev-ref标志获取当前分支名称,例如:
git rev-parse --abbrev-ref HEAD