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