2012-11-15 38 views
5

假设下面的提交历史:如何仅获取特定分支的Git日志?

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

做一个GIT中日志主给出下列顺序A-B-C-d-E-F-G-H的日志条目。 - 但我感兴趣的是主单独(即A-d-E-H

的历史如何从Branch1的 “摆脱” 了不必要的日志条目?我尝试了git的日志很多的选择,但我无法找到任何合适的...


这导致进一步的事情,我不要在此背景下理解:

综观由给出的日志历史记录git log master它显示了我的分支主人是如何演变的(ABCDEFGH)。

但这样做一个GIT中结帐HEAD〜1(假定主= HEAD)给我ë(演进HEAD〜3 - HEAD〜2d - HEAD〜 1ë - HEADħ - >ADEH

这是我不明白:^h的祖先看着混帐日志,而^h的祖先看着git的结帐Ë

我不明白这一点 - 什么是^h的祖先:é ...


结论:我想吃点什么是混帐?日志条目HEADHEAD仅限于(例如在n = 1 ... 3之上)。 这是如何实现的?它有可能吗?

+0

可能重复[Git:如何列出提交此分支但不是从合并分支](http://stackoverflow.com/questions/10248137/git-how-to-list-commits-on-this-branch - 但不是从合并分支) – CharlesB

+0

你是对的 - 有错误的搜索关键字(和引用的问题是相当不好的标签...) – hoppfrosch

+0

@hopprosch:我在问题中修复了标签 – CharlesB

回答

6

你在找什么是

git log --first-parent 

为什么该选项被称为--first-parent回答您的问题

我不明白这一点 - 什么是H的祖先:G或E〜

答案是:均为。 E是的第一个父项,但G是第二个父项,因为H是合并提交。合并提交是一个拥有多个父代的提交。

+0

非常感谢 - 这正是我一直在寻找的!我玩了TortoiseGit--在日志视图中有一个“第一父母”选项。但是,这似乎并没有在所有情况下正常工作(如果“显示所有分支”被选中,“first_parent”不显示任何效果......)这导致我离开了“第一父母”(TortoiseGit 1.7.14.0) – hoppfrosch

+0

什么是不完全清楚,是命名法:为什么选项称为“ - first-parent”(单数),而它给出了完整的第一级祖先行?应该更好“ - 第一父母”恕我直言 – hoppfrosch

+0

@hoppfrosch对于每次遇到的提交,只有该特定提交的'第一个父'被选中。 Commit H是一个合并提交,因此它有两个父母(G和E),但是第一个父代是E.因此,每次遇到合并提交时,都会遵循唯一的第一个父代,从而完全忽略顶部分支。 –