怎么git rev-parse
办?
我已经阅读了手册页,但提出的问题多于答案。像:
挑选和按摩参数
按摩?那是什么意思?
我正在使用修订说明符(对SHA1)作为解析器,例如
git rev-parse HEAD^
要么
git rev-parse origin/master
这是命令的目的吗?如果没有,使用它来实现这一目标是否正确?
git rev-parse
可笑的手册页令人难以理解。令我惊讶的是,即使在5年之后,没有人愿意将这种术语重写为人类可读的东西。
怎么git rev-parse
办?
我已经阅读了手册页,但提出的问题多于答案。像:
挑选和按摩参数
按摩?那是什么意思?
我正在使用修订说明符(对SHA1)作为解析器,例如
git rev-parse HEAD^
要么
git rev-parse origin/master
这是命令的目的吗?如果没有,使用它来实现这一目标是否正确?
git rev-parse
可笑的手册页令人难以理解。令我惊讶的是,即使在5年之后,没有人愿意将这种术语重写为人类可读的东西。
Answers:
git rev-parse
是plumbing
主要用于操纵的辅助命令。
一种常见的用法git rev-parse
是在给定修订说明符的情况下打印SHA1哈希。此外,它还有各种选项可以格式化此输出,例如--short
用于打印较短的唯一SHA1。
我还用于其他一些用例(在基于git的脚本和其他工具中):
--verify
验证指定的对象是有效的git对象。--git-dir
用于显示目录的绝对/相对路径.git
。--is-inside-git-dir
中:--is-inside-work-tree
--is-bare-repository
--branches
),标签(--tags
)和引用的SHA1哈希值--remote
--parse-opt
规范化脚本中的参数(类似于getopt
),并输出可与eval
Massage
仅表示可以将信息从一种形式转换为另一种形式,即转换命令。这些是我可以想到的简单示例:
A..B
为git log
git diff
B ^A
只是为了详细说明命令名称的词源rev-parse
,Git始终rev
在管道命令中使用该术语作为“修订”的缩写,通常表示40个字符的SHA1哈希表示一次提交。命令rev-list
例如,为分支或其他内容打印40个字符的提交哈希值列表。
在这种情况下,名称可能会扩展为parse-a-commitish-to-a-full-SHA1-hash
。尽管该命令具有Tuxdude的答案中提到的几个辅助功能,但它的名字似乎是将用户友好的引用(如分支名称或缩写的哈希)转换为明确的40个字符的SHA1哈希的用例,这对于许多编程/管道最为有用。目的。
我知道我一直在想着它是“反向解析”的东西,然后才弄清楚,并且在理解“按摩”和“操纵”这两个术语时遇到了同样的麻烦:)
无论如何,我发现此“解析到修订”概念是一种令人满意的方式,也是我在需要此类命令时想到此命令的可靠概念。通常,在编写Git脚本时,您会使用用户友好的提交参考作为用户输入,并且通常希望在收到Git后尽快将其解析为经过验证且明确的工作参考。否则,输入翻译和验证往往会在脚本中扩散。
messaging
,并manipulation
为您暗示过吗?
git rev-parse
是的缩写git revision-parse
。它接受给定的输入并返回相应的40个字符的修订版ID。
git rev-parse
也可以使用--abbrev-ref标志获取当前分支名称,例如:
git rev-parse --abbrev-ref HEAD
git log --format=%B -n 1 <revision>
rev-parse
命令的目的。您还可以使用它来规范化命令行,这样实际的程序就不必了解Git的复杂对象名称语法(您可以git rev-parse
在命令行之前更改或“按摩”某些参数)。称为实际程序)。