2014-12-06 197 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