2017-05-18 123 views
1

假設我有一個git分支,並且我正在開發一個大功能,所以定期通過運行git merge master使其與master保持同步。在顯示git日誌時忽略合併提交

master合併帶來了很多不同的提交,所以當我做git log我得到的「這個分支」我個人提交的交織歷史,也有幾個miscelalneous從master

犯有沒有隻能查看「此」分支上的歷史記錄嗎?

git是否本機跟蹤合併中的哪個父代是「主」合併,哪個合併到另一個合併?如果是這樣,應該有可能遍歷歷史記錄,只在每個合併點跟隨「主要」父母?

謝謝!

回答

5

可以使用

git log origin/master.. --no-merges 

所以它只會顯示在您的Dev分支提交不在主。此外與國旗--no-merges它不會打印提交與多個父母。


回答你的第二個問題是肯定的,在合併提交基地分支「是」第一個父和要合併到它的分支「是」第二個(把它放在一個簡單辦法);因此在尋找修訂版時,如果只關注第一個父母,則可以使用標記--first-parent

這意味着,如果你有這樣的歷史:

* a953ca2 Merge remote-tracking branch 'origin/WildBranch' 
|\ 
| * b5399f7 Commit to WildBranch: 1483140838 
| * 30f181d Commit to WildBranch: 1483140837 
| * 5f18ce9 NEW BRANCH: WildBranch 
* | 42554e5 Commit to master: 1483140840 
* | d512b35 Commit to master: 1483140839 
|/ 
* 5f2e69e Commit to master: 1483140836 

所以,如果我站在a953ca2,這次合併提交,第一親是最後一次提交的主做(^1意味着這第一父提交):

$ git log --pretty=format:"%h" a953ca2^1 -1 
42554e5 

,而第二個就是HEAD瞄準在你的Dev分支,當你它合併到主(^2指的這個第二父提交):

$ git log --pretty=format:"%h" a953ca2^2 -1 
b5399f7 

,如果你是站在掌握和運用--first-parent選項就會順着只有那些提交了修訂:

$ git log --first-parent --pretty=format:"%h" a953ca2 -4 
a953ca2 
42554e5 
d512b35 
5f2e69e