是否可以计算特定提交的 parents 数量?
Is it possible to count the number of parents an especific commit has?
大多数提交有 1 parent 次提交。然而,一些提交有多个 parents。例如,在 --no-ff
(无 fast-forward)标志下创建的合并提交至少有 2 parents.
git 中是否有命令显示特定提交的 parent 的确切数量?
查看父提交列表:
git show -s --format=%p [commit-id]
只显示家长人数:
git show -s --format=%p [commit-id] | wc -w
解释:
-s
是 --no-patch
的缩写,其中 suppresses the diff output.
%p
displays only the parents 格式.
wc
在 *nix shell 中是 word count 而 -w
只是单词。
对于随意或人类可读的答案,请使用 git show
,如 。
然而,尽管 --format
的使用是干净的,但 git show
的输出是允许改变的:它是一个 "porcelain command" in git
's "plumbing/porcelain separation". () 改变可能不太可能,但你可能还会看到错误和其他人为指导的输出,因为 git show
旨在供人使用而不是脚本使用。
要获得更严格或有规范保证的父级列表,适用于长期 shell 脚本或工具集成,您需要使用 plumbing command like git cat-file
, similar to .
git cat-file -p [commit-id] | sed -ne '/^$/q;/^parent/p' | wc -l
git cat-file -p
将漂亮地打印具有给定 ID 的对象。 HEAD
等修订也适用于此处。
sed
这里将同时过滤和截断输出:
-n
抑制所有输出。
-e
使用命令行指定的脚本。
/^$/q
告诉 sed
如果看到空行就退出,比如将提交元数据与其消息分开的行。这可以防止在您的提交正文中误解“父”一词。
;
分隔 sed
个命令。
/^parent/p
告诉 sed
只打印以 parent
开头的行,覆盖 -n
.
wc -l
打印结果行数。
再一次,对于大多数情况,git show
是一种更惯用的方法,因为它在一个命令中读取和解析所有提交,并且已经在编写时考虑到了边缘情况和奇怪之处。但是,对于长期 git
工具的开发人员来说,管道命令可能是更有保障的解决方案。
大多数提交有 1 parent 次提交。然而,一些提交有多个 parents。例如,在 --no-ff
(无 fast-forward)标志下创建的合并提交至少有 2 parents.
git 中是否有命令显示特定提交的 parent 的确切数量?
查看父提交列表:
git show -s --format=%p [commit-id]
只显示家长人数:
git show -s --format=%p [commit-id] | wc -w
解释:
-s
是--no-patch
的缩写,其中 suppresses the diff output.%p
displays only the parents 格式.wc
在 *nix shell 中是 word count 而-w
只是单词。
对于随意或人类可读的答案,请使用 git show
,如
然而,尽管 --format
的使用是干净的,但 git show
的输出是允许改变的:它是一个 "porcelain command" in git
's "plumbing/porcelain separation". (git show
旨在供人使用而不是脚本使用。
要获得更严格或有规范保证的父级列表,适用于长期 shell 脚本或工具集成,您需要使用 plumbing command like git cat-file
, similar to
git cat-file -p [commit-id] | sed -ne '/^$/q;/^parent/p' | wc -l
git cat-file -p
将漂亮地打印具有给定 ID 的对象。HEAD
等修订也适用于此处。sed
这里将同时过滤和截断输出:-n
抑制所有输出。-e
使用命令行指定的脚本。/^$/q
告诉sed
如果看到空行就退出,比如将提交元数据与其消息分开的行。这可以防止在您的提交正文中误解“父”一词。;
分隔sed
个命令。/^parent/p
告诉sed
只打印以parent
开头的行,覆盖-n
.
wc -l
打印结果行数。
再一次,对于大多数情况,git show
是一种更惯用的方法,因为它在一个命令中读取和解析所有提交,并且已经在编写时考虑到了边缘情况和奇怪之处。但是,对于长期 git
工具的开发人员来说,管道命令可能是更有保障的解决方案。