2011-12-15 145 views
64

使用git時,有沒有辦法顯示對分支進行的提交,而忽略通過合併引入的所有提交?顯示直接提交到分支的提交,忽略Git中的合併

我試圖檢查在分支上做出的代碼更改,而忽略了我們在其他合併分支上所做的代碼更改。我知道這是該死的近乎不可能以這種方式顯示差異,但我想能夠找出我需要審查哪些提交。

回答

90

父母在git中的許多環境中都具有相同的權重。如果您在合併其他更改時始終保持一致,那麼您可能會發現這會給你想要的東西。

git log --no-merges --first-parent 

否則,您可能能夠排除其他指定分支的提交。

git log --no-merges ^other-branch-1 ^other-branch-2 ^other-branch-3 

如果你想查看您要合併到一個主要分支,然後以最簡單的辦法就是在本地克隆進行合併,然後就看DIFF與第一變化父母在發佈合併之前。

+0

這第一個命令是優「正確的分支功能」(https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR) – 2011-12-15 22:02:54

3

一個非常hackish的方式:

git log --graph --oneline --no-merges thebranch|grep '^\*'

5

您可以使用git cherry的是,它會找到你承諾的是尚未合併到上游,或者說是在一個分支的提交而不是其他。因此,考慮兩個分支命名爲「你的分支」和「大師」:

git cherry -v your-branch master 

將爲您呈現的提交他們的補丁ID進行比較的列表:

+ c3e441bf4759d4aa698b4a413f1f03368206e82f Updated Readme 
- 2a9b2f5ab1fdb9ee0a630e62ca7aebbebd77f9a7 Fixed formatting 
+ e037c1d90b812af27dce6ed11d2db9454a6a74c2 Corrected spelling mistake 

您可以注意到,承諾由前綴「 - 「是出現在兩個分支中的那些,而以」+「爲前綴的那些只在你的分支上可用。

作爲替代,您可以使用:

git log --pretty=format:"%h %s" your-branch..master --no-merges 

它會告訴你關於「你的分支」是尚不存在的「主人」的提交完成的列表