2017-05-18 6 views
1

私はgitブランチを持っていて、大きな機能を扱っているとしますので、masterを定期的に最新の状態に保ちます。git merge masterを実行してください。 masterにマージgitログを表示するときにマージされたコミットを無視する

は異なるコミットの多くをもたらしますので、私はgit logを行うとき、私は「このブランチ」に私の個人的なコミットの絡み合う歴史を取得していますし、また、いくつかのmiscelalneousがmaster

からコミットですが"この"枝の歴史だけを見る方法?

gitは、マージのどの親が「プライマリ」で、どちらが他方に「マージされた」かをネイティブに追跡しますか?もしそうなら、ヒストリをたどって、各マージポイントで "プライマリ"の親だけに従うことが可能であるべきですか?

ありがとうございます!

答えて

5

あなたはそれをマスターしていない、あなたのdevの枝にいるだけコミットを表示します

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

を使用することができます。さらに、フラグ--no-mergesを使用すると、複数の親を持つコミットが印刷されません。


あなたの2番目の質問への答えはイエスで、マージでベースブランチをコミットする最初の親「である」とあなたがそれにマージされているブランチはシンプルにそれを置くために第2の1(「あります」方法);したがって、リビジョンを探すときは最初の親だけに従うように、フラグ--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)は^2は、この第二の親がコミットを意味します(あなたのdevの枝に目指していたところ秒1である間:

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

あなたはマスターに立って、それが改正にのみコミットに従います--first-parentオプションを使用している場合:

$ git log --first-parent --pretty=format:"%h" a953ca2 -4 
a953ca2 
42554e5 
d512b35 
5f2e69e 
関連する問題