2014-12-06 201 views
0

很久以前两个分支分歧(例如devel和master)。我想展示分歧点的任何一侧的历史记录,例如+/- 10提交。 (这是为了决定如何重新捕获旧分支以改变命名约定)git显示前几个提交回合并基的提交

很容易找到merge-base(git merge-base devel master),并显示之前的10个提交(例如git log --oneline -10 $(git merge-base devel master))。

但我不确定如何定位提交之前(比最近)合并基础限制显示的提交范围(例如,使用show-branch)10提交点。

沿着给定的发展路线,还有更近期的第N次提交吗?

回答

0

为此,您只需要grep的上下文选项。

git log devel master --no-abbrev-commit --oneline --date-order \ 
| grep -10 $(git merge-base devel master) 

如果你想绘制的图形结构,git的日志都有打印一些行不承诺把一切都正确连接,并与您的指控,很会搞乱。因此,先获取原始提交ID,然后告诉日志将其明确地图化为全部:

git rev-list --date-order devel master \ 
| grep -10 $(git merge-base devel master) \ 
| xargs git log -21 --graph --decorate --oneline 
+0

这是一个非常稳定的命令行。感谢您的制作。我一直希望可能为一个隐藏的--before =选项来补充 - 更多选项,以'git show-branch' ;-) – 2014-12-07 11:13:03

+0

np,...'show-branch''s'--more' doesn不要做'--before'的事情,像这样的上下文似乎是一个有用的东西来显示,但由于日志输出通过你的传呼器反馈,无论如何,你可以'''正确的提交并得到你想要的。我修正了一个错字,并在更新中添加了日期顺序。 – jthill 2014-12-07 14:12:05

+0

p.s.我承认我真的不明白(通常在s.o.这里)普遍的工具已经可以为你做的事情的命令选项。这导致每个工具都导入所有通用工具,在我看来,这似乎是毫无意义的重复和浪费。 – jthill 2014-12-07 14:19:03