2010-10-23 50 views
3

通常,'git log'顯示所有對當前點有貢獻的提交,即使那些來自分支合併到當前分支的提交也是如此。是否有可能只看到git中某個特定分支的提交?

是否有可能發出一個命令只看到特定分支中的提交?也就是說,如果有一個集成分支在運輸之前合併了所有東西,那麼是否有任何git命令僅查看那個分支中的提交?

回答

6

這(你已經知道)指定一組的承諾,從整合可達:

g log integration 

的「^」操作,可用於一切通過這次提交(REV)不可達。舉例來說,一切都通過集成訪問,並排除一切也可達大師:

g log ^master integration 

對於常見的簡寫(整合而非掌握):

g log master..integration 

您可以使用多個排除符(整合,但不是主人或開發者):

g log ^master ^devel integration 

希望覆蓋足夠給你你需要的東西。此信息位於man git-rev-parse指定修訂指定範圍部分。

0

我不完全確定。 git中的一個分支的概念只是一個指向樹中某個位置的指針(不像svn等中的完全獨立的開發線)。

然而,你可以做一個git分支--no-merged來查看哪些分支需要集成到當前分支中。

我想有可能寫一些東西,會給你所有提交只有背後的當前HEAD和其他地方。我不知道如何。

1

這應該工作:

git checkout <branch> 
git diff master <commit just before the merge to master> 

應該有自動獲得的名稱的方式提交你做這個成宏或別名只是掌握,這將讓合併之前。

此外,檢查出git log -p -m --first-parent如在git help log文檔中所述;它可能會做類似的事情。

+0

「--first-parent」幾乎肯定是OP想要的。這將導致修訂樹步行僅遵循合併提交的第一個父代。當您將'topic'合併到'integration'中時,來自'integration'的(合併)提交是第一個父代,而來自'topic'的(合併)提交是第二個父代。假設你已經對你合併的方式保持一致,那應該列出所需的提交。 (OP正在詢問有關提交(複數)的內容,所以它們不需要'diff')。 – Cascabel 2010-10-23 16:51:37

相關問題