2012-11-15 60 views
5

假設下面的提交歷史:如何僅獲取特定分支的Git日誌?

Branch1  B---C-------F---G 
     / \   \ 
Master A-------D---E-------H 

做一個GIT中日誌主給出下列順序A-B-C-d-E-F-G-H的日誌條目。 - 但我感興趣的是主單獨(即A-d-E-H

的歷史如何從Branch1的 「擺脫」 了不必要的日誌條目?我嘗試了git的日誌很多的選擇,但我無法找到任何合適的...


這導致進一步的事情,我不要在此背景下理解:

綜觀由給出的日誌歷史記錄git log master它顯示了我的分支主人是如何演變的(ABCDEFGH)。

但這樣做一個GIT中結帳HEAD〜1(假定主= HEAD)給我ë(演進HEAD〜3 - HEAD〜2d - HEAD〜 1ë - HEADħ - >ADEH

這是我不明白:^h的祖先看着混帳日誌,而^h的祖先看着git的結帳Ë

我不明白這一點 - 什麼是^h的祖先:é ...


結論:我想吃點什麼是混帳?日誌條目HEADHEAD僅限於(例如在n = 1 ... 3之上)。 這是如何實現的?它有可能嗎?

+0

可能重複[Git:如何列出提交此分支但不是從合併分支](http://stackoverflow.com/questions/10248137/git-how-to-list-commits-on-this-branch - 但不是從合併分支) – CharlesB

+0

你是對的 - 有錯誤的搜索關鍵字(和引用的問題是相當不好的標籤...) – hoppfrosch

+0

@hopprosch:我在問題中修復了標籤 – CharlesB

回答

6

你在找什麼是

git log --first-parent 

爲什麼該選項被稱爲--first-parent回答您的問題

我不明白這一點 - 什麼是H的祖先:G或E〜

答案是:均爲。 E是的第一個父項,但G是第二個父項,因爲H是合併提交。合併提交是一個擁有多個父代的提交。

+0

非常感謝 - 這正是我一直在尋找的!我玩了TortoiseGit--在日誌視圖中有一個「第一父母」選項。但是,這似乎並沒有在所有情況下正常工作(如果「顯示所有分支」被選中,「first_parent」不顯示任何效果......)這導致我離開了「第一父母」(TortoiseGit 1.7.14.0) – hoppfrosch

+0

什麼是不完全清楚,是命名法:爲什麼選項稱爲「 - first-parent」(單數),而它給出了完整的第一級祖先行?應該更好「 - 第一父母」恕我直言 – hoppfrosch

+0

@hoppfrosch對於每次遇到的提交,只有該特定提交的'第一個父'被選中。 Commit H是一個合併提交,因此它有兩個父母(G和E),但是第一個父代是E.因此,每次遇到合併提交時,都會遵循唯一的第一個父代,從而完全忽略頂部分支。 –