假设以下Git历史记录:
Branch1 B---C-------F---G
/ \ \
Master A-------D---E-------H
执行 git log master 按以下顺序给出日志条目 ABCDEFGH。 - 但我对仅限master的历史感兴趣(即 ADEH < /强>)
如何从 Branch1 中“清除”不需要的日志条目?我为 git log 尝试了很多选项,但我找不到合适的东西......
这导致了我在这方面不理解的另一件事:
查看 git log master 给出的日志历史记录,它显示了我的分支主文件是如何演变的( A-B-C-D-E-F-G-H )。
但是做一个 git checkout HEAD~1 (假设master = HEAD)给我 E (Evolution HEAD~3 : A - HEAD~2 : D - HEAD~1 : E - HEAD : H - &gt; ADEH )
这是我不明白的: H 的祖先 git log 是 G ,而的祖先是 > H 查看 git checkout E 。
我不明白这一点 - H 的祖先是什么: G 或 E ?...
结论:我想要的是从 HEAD 到 HEAD~n 的 git log 条目(例如,在n = 1 ... 3之上)。 怎么能实现这一目标?它有可能吗?
答案 0 :(得分:7)
您正在寻找的是
git log --first-parent
为什么调用此选项--first-parent
会回答您的问题
我不明白这一点 - H:G或E的祖先是什么?
答案是:两者。 E是第一个父,但G是第二个父,因为H是合并提交。合并提交是具有多个父级的提交。