做什么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
是主要用于操作的辅助命令。
的一种常见用法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
,Gitrev
在管道命令中始终使用该术语作为“修订”的缩写,通常表示提交的 40 个字符的 SHA1 哈希。例如,该命令rev-list
打印一个分支或其他任何内容的 40 字符提交哈希列表。
在这种情况下,名称可能会扩展为parse-a-commitish-to-a-full-SHA1-hash
. 虽然该命令具有 Tuxdude 的回答中提到的几个辅助功能,但它的同名似乎是将用户友好的引用(如分支名称或缩写哈希)转换为对许多编程/管道最有用的明确 40 个字符的 SHA1 哈希的用例目的。
我知道在我弄明白之前我一直在想它是“反向解析”的东西,并且在理解“按摩”和“操纵”这两个术语时遇到了同样的麻烦:)
无论如何,我发现这种“解析到修订”的概念是一种令人满意的思考方式,并且是一种可靠的概念,可以在我需要这种东西时想到这个命令。通常在编写 Git 脚本时,您会将用户友好的提交参考作为用户输入,并且通常希望在收到它后尽快将其解析为经过验证且明确的工作参考。否则,输入翻译和验证往往会通过脚本激增。
git rev-parse
也适用于使用--abbrev-ref标志获取当前分支名称,例如:
git rev-parse --abbrev-ref HEAD
TLDR:
它可以帮助您找出当前 HEAD 的提交 ID(即您正在查看的当前提交)
git rev-parse HEAD
或者如果你想要更短的提交
git rev-parse --short HEAD
如果你想在另一个分支中找到最新的提交,你可以这样做
git rev-parse <local-branch-name>
git rev-parse origin/<remote-branch-name>