假設你的git的承諾歷史承諾如下:的Git:如何列出這個分支,但沒有從合併分支機構
A---B---C---D---E---F master
\ /
X---Y---Z topic
是否有可能讓Git名單隻掌握了提交,A-F?換句話說,如果提交是在一個合併分支上,我不希望它顯示。
假設你的git的承諾歷史承諾如下:的Git:如何列出這個分支,但沒有從合併分支機構
A---B---C---D---E---F master
\ /
X---Y---Z topic
是否有可能讓Git名單隻掌握了提交,A-F?換句話說,如果提交是在一個合併分支上,我不希望它顯示。
git log
有選擇--first-parent
,所以你不會得到topic
歷史。
當從master
合併時,master
提交是合併中的第一個父項。 Git日誌允許僅顯示那些使用--first-parent的提交,這樣你就可以得到正確的東西。
+1'--first-parent'這樣做:)與'--no-merges'結合,你可以隱藏合併提交 – c00kiemon5ter 2012-04-20 14:58:04
這對'tig'很有用https://github.com/jonas/tig – 2013-11-04 23:57:40
這不行嗎?
git log master
git log --stat master
沒有這些不工作。合併提交有兩個父母;從父母那裏追蹤的一切都在'主'分支上。 – GoZoner 2012-04-21 04:27:23
有去了解這一點,不依賴於--first-parent
這將是在某些情況下有幫助..使用分支排除過濾器
git log origin/topic ^origin/master
這會給你一個日誌origin/topic
與所有的另一個通用方式origin/master
的提交已刪除。
您還可以添加--no-merges
這將隱藏您可能或不需要的合併提交。
另一個方便的提示是使用shortlog
而不是log
這將給你更多的簡化總結,可以方便地發佈註釋,或在分支什麼的溝通。
更新
重新閱讀此之後,你其實想的是什麼我張貼幾乎相反;然而它最終會排除master和foo上的所有內容(git log origin/master ^origin/foo
)。然而,你也可以得到你要求的東西(隱藏所有提交合並的一部分)git log origin/master --no-merges
那麼,Git怎麼知道'D'和'Z'是合併分支的一部分? – Romain 2012-04-20 14:53:06
當與主人合併時,以前的主要提交是合併中的第一個父母。 'git log'只允許顯示那些用'--first-parent'進行的提交,所以你得到正確的東西 – CharlesB 2012-04-20 14:56:11
可能的重複[如何運行Git Log來查看僅針對特定分支的更改?](http:/ /stackoverflow.com/questions/4649356/how-do-i-run-git-log-to-see-changes-only-for-a-specific-branch) – 2013-11-06 09:18:03