可以使用
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