git - git show 和 git log 显示提交 ID 时的区别

标签 git git-log git-show

我需要获取两个已知提交之间的提交 ID 列表。我使用了以下命令:

git show --format=format:%H --quiet commitA...commitB

在 merge 提交之前它可以完美地工作。即:

*   c36a37b
|\
| * 92187d9
* | e24d2c4
|/
* eef755e

输出如下:

$ git show --format=format:%H --quiet c36a37b...eef755e
c36a37b80caf2bae7b4833617443f4dfea8d8816

e24d2c4292baef4106976373ff3d01341834648d
92187d9a1002027c7d99824f2561467692bfd6b3

当我更改 show 命令并使用 log 时:

$ git log --format=format:%H --quiet c36a37b...eef755e
c36a37b80caf2bae7b4833617443f4dfea8d8816
e24d2c4292baef4106976373ff3d01341834648d
92187d9a1002027c7d99824f2561467692bfd6b3

请注意,第一次提交后没有空行。我并不热衷于使用 git show 而不是 git log - 我什至不记得我从哪里得到这个想法。但是这个多余的空行导致了我的程序失败,我想知道它是否有什么特殊含义。

Git 版本 1.9.5。

最佳答案

我在手册页中没有看到任何内容解释为什么存在该空白行。但是,如果您将输出传递给另一个程序,您无论如何都不需要瓷器命令,因为输出格式可能会发生变化。你想要的命令是

git rev-list c36a37b...eef755e

更新:针对您的具体问题 - 它有任何意义吗 - 我的答案是没有一个您可以指望的,因为 (a) 它不是手册页中提到,并且 (b) git show 的输出不打算由其他程序解析。

关于git - git show 和 git log 显示提交 ID 时的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416378/

相关文章:

git - 根据消息从 git log 中获取任务编号列表

git - diff 和 show 的不同 git pager 选项

git - 如何阅读 git show 命令输出

gitlab - Git 显示合并提交,列出比合并文件更多的文件

git - 如何在本地执行 Capistrano 任务?

git - 如何在所有文件、所有分支、所有存储库中搜索(grep)?

VS Code 中缺少 Git——没有源代码控制提供程序

Git 和二进制文件历史

git - 为什么 "git log -‌- foo"对删除的文件 foo 不起作用?

git - 无法通过在 SourceTree 中选择提交 ID 选项来启动功能分支