【问题标题】:How do I get the Git log for a specific branch only?如何仅获取特定分支的 Git 日志?
【发布时间】:2012-11-04 02:00:12
【问题描述】:

假设以下 Git 历史:

Branch1     B---C-------F---G
           /     \           \
Master    A-------D---E-------H

执行 git log master 会按以下顺序提供日志条目 ABCDEFGH. - 但我对 master-only 的历史感兴趣(即 ADEH)

我怎样才能“摆脱”来自 Branch1 的不需要的日志条目?我为 git log 尝试了很多选项,但我找不到任何合适的...


这导致了我在这种情况下不理解的另一件事:

查看 git log master 给出的日志历史,它显示了我的分支 master 是如何演变的 (A-B-C-D-E-F-G-H)。

但是执行 git checkout HEAD~1(假设 master=HEAD)给了我 E(进化HEAD~3 A - HEAD~2:D - HEAD~1:E - HEAD :H -> ADEH)

这是我不明白的:H的祖先看git logG,而的祖先>H 看着 git checkoutE

我不明白 - H 的祖先是什么:GE?...


结论:我想要的只是 git logHEADHEAD~n 的条目(例如上面的 n = 1...3)。 如何做到这一点?有可能吗?

【问题讨论】:

标签: git branch git-branch git-checkout git-log


【解决方案1】:

你要找的是

git log --first-parent

为什么这个选项被称为--first-parent回答你的问题

我不明白 - H:G 或 E 的祖先是什么?

答案是:两者都。 E 是 第一个父节点,但 G 是 第二个父节点,因为 H 是一个合并提交。合并提交是具有多个父级的提交。

【讨论】:

  • 非常感谢 - 这正是我想要的!我玩过 TortoiseGit——它在日志视图中有一个“第一父”选项。但这似乎在所有情况下都无法正常工作(如果选中“显示所有分支”,“first_parent”不会显示任何效果......)这让我远离了“第一父”(TortoiseGit 1.7.14.0)跨度>
  • 不完全清楚的是命名法:为什么选项称为“--first-parent”(单数),而它给出了完整的第一级祖先行?应该是更好的“--first-parents”恕我直言
  • @hoppfrosch 对于遇到的每个提交,仅选择该特定提交的“第一个父级”。提交 H 是一个合并提交,因此它有两个父级(G 和 E),但第一个父级是 E。所以每次遇到合并提交时,都会遵循唯一的第一个父级,从而完全省略了顶部分支。跨度>
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 2018-06-22
  • 1970-01-01
  • 2021-02-04
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
相关资源
最近更新 更多