git rev-parse
是什么意思?
我阅读了手册,但它引起了更多问题。比如:
挑选和整理参数
整理? 这是什么意思?
我正在将其用作修订说明符的解析器(到SHA1),例如
git rev-parse HEAD^
或者git rev-parse origin/master
这是命令的目的吗?如果不是,使用它来实现这个目的是否正确?
git rev-parse
是什么意思?
我阅读了手册,但它引起了更多问题。比如:
挑选和整理参数
整理? 这是什么意思?
我正在将其用作修订说明符的解析器(到SHA1),例如
git rev-parse HEAD^
或者git rev-parse origin/master
这是命令的目的吗?如果不是,使用它来实现这个目的是否正确?
git rev-parse
是一个辅助的 plumbing
命令,主要用于操作。
最常见的使用方式是根据修订指定符打印 SHA1 哈希值。此外,它还有多种选项来格式化输出,例如 --short
用于打印较短的唯一 SHA1。
还有其他用例(在构建在 git 之上的脚本和其他工具中),我用过:
--verify
以验证指定对象是否为有效的 git 对象。--git-dir
以显示 .git
目录的绝对/相对路径。--is-inside-git-dir
检查当前是否在存储库内或使用 --is-inside-work-tree
检查当前是否在工作树内。--is-bare-repository
来检查 repo 是否为空。--remote
)筛选分支(--branches
)、标签(--tags
) 和 refs 的 SHA1 哈希值。--parse-opt
用于在脚本中规范化参数(类似于 getopt
)并打印可用于 eval
的输出字符串。Massage
意味着可以将信息从一种形式转换为另一种形式,即一个变换命令。这里是我能想到的一些快速示例:
A..B
转换为基础 plumbing 命令的等效参数,例如 B ^A
,以供 git log
或 git diff
使用。rev-parse
的词源进行解释,Git 在 pluming 命令中一直使用rev
一词表示“revision”(版本),通常用于表示 commit 的 40 个字符的 SHA1 hash。例如,命令rev-list
会打印分支或其他内容的 40 个字符的 commit hash 列表。parse-a-commitish-to-a-full-SHA1-hash
。尽管该命令具有 Tuxdude 答案中提到的多种辅助功能,但它的名字似乎是将类似分支名称或缩写哈希值等用户友好引用转换为最适用于许多编程/水管目的的明确的 40 字符 SHA1 hash 的用例。git rev-parse
是git revision-parse
的缩写。它接受给定的输入并返回相应的40个字符的修订版本ID。 - Jonathan Benngit rev-parse
很简单易懂。为什么手册中要用这样的象形文字来描述呢? - GMAgit log --format=%B -n 1 <revision>
。该命令的作用是显示指定版本的提交信息,并且只显示提交信息中的正文部分。请注意,这里的 <revision>
应替换为你要查询的版本号或者分支名。 - hipyhopTLDR:
它可以帮助你找出当前HEAD的提交ID(即您正在查看的当前提交)。
git rev-parse HEAD
或者如果你想要更短的提交
git rev-parse --short HEAD
如果你想找到另一个分支中最新的提交,可以执行以下操作
git rev-parse <local-branch-name>
git rev-parse origin/<remote-branch-name>
rev-parse
主要是用来解析修订/对象名称,给其他命令使用的内部工具。你现在做的事情基本上就是rev-parse
命令的目的。你也可以使用它来规范化命令行,这样实际程序就不必理解Git的复杂对象名称语法(你可以在调用实际程序之前使用git rev-parse
来更改或处理命令行中的某些参数)。 - user824425git rev-parse
的 man 手册极难理解。即使过去5年里没有人费心将那些行话改写成易懂的语言,我还是感到惊讶。 - not2qubit