微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以计算特定提交的父级数量?

如何解决是否可以计算特定提交的父级数量?

大多数提交都有 1 个父提交。但是,一些提交有多个父级。例如,在 --no-ff(无快进)标志下创建的合并提交至少有 2 个父项。

git 中是否有一个命令可以显示特定提交具有的确切父级数量

解决方法

查看父提交列表:

git show -s --format=%p [commit-id]

只显示父母的数量:

git show -s --format=%p [commit-id] | wc -w

说明:

,

对于随意或人类可读的答案,请使用 git show 作为 TTT's post

然而,尽管 --format 使用干净,git show 的输出允许改变:它是 git 的“管道/瓷器分离”中的 "porcelain command" ”。 (The same is true of git log --format.) 更改可能不太可能发生,但您也可能会看到错误和其他人为导向的输出,因为 git show 旨在供人类使用而不是脚本使用。

对于更严格或规范保证的父级列表,适用于长期存在的 shell 脚本或工具集成,您需要使用类似 git cat-fileplumbing command,类似于 {{3 }}。

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 工具的开发者来说,管道命令可能是更有保证的解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。