假设你的 Git 提交历史看起来像这样:
A---B---C---D---E---F master
\ /
X---Y---Z topic
是否可以让Git仅列出主分支上的提交记录A-F?换句话说,如果提交记录在合并的分支上,我不想看到它。
假设你的 Git 提交历史看起来像这样:
A---B---C---D---E---F master
\ /
X---Y---Z topic
是否可以让Git仅列出主分支上的提交记录A-F?换句话说,如果提交记录在合并的分支上,我不想看到它。
git log
带有选项 --first-parent
,因此您将不会获取 topic
的历史记录。
当从 master
合并时,master
提交是合并的第一个父提交。Git log 允许仅显示那些带有 --first-parent 选项的提交,这样您就可以得到正确的内容。
--first-parent
就可以了 :) 再加上 --no-merges
就能隐藏合并提交。 - c00kiemon5tergit log origin/master --no-merges
将给出主分支的日志并排除任何合并提交(在此例中为x, y, z)。git log origin/topic ^origin/master
这将为您提供一个以origin/master
的提交为基础来显示origin/topic
的日志。--no-merges
,它将隐藏合并提交,这可能是您需要的也可能不是。shortlog
而不是log
,它会给您更多缩略汇总信息,对于发布说明或分支内容的通信非常有用。git log origin/master ^origin/foo
)。但是,您也可以通过git log origin/master --no-merges
获得您所需的内容(隐藏属于合并的所有提交)。查尔斯的答案对我有用。
git log has option --first-parent --no-merges, so you won't get topic history.
但是,如果您在Git活动中使用任何图形用户界面,例如Git Extension、SourceTree、Tortoise Git等,
那么您的工具中将有直接选项来检查第一个父级。我想把这个答案添加到列表中,因为大多数人发现图形界面很容易使用。如果需要,您可以直接从工具中挑选特定分支的所有提交。
我附上了两个工具的示例,其他工具也应该类似:[我已模糊化用户名、git仓库名称,因为这是私有仓库,但您仍然可以了解如何从工具中使用第一个父级]
这个不起作用吗?
git log master
git log --stat master
D
和Z
中哪一个是合并分支的一部分呢? - Romaingit log
可以通过使用--first-parent
选项只显示这些提交,因此您可以得到正确的内容。 - CharlesB