2012-04-20 7 views
66

からコミットする方法次のようになります。Gitは:リストには、あなたのgitの歴史コミットとし、このブランチではなく、合併枝

A---B---C---D---E---F master 
    \  /
     X---Y---Z topic 

それはgitのリストのマスターにのみコミット、-Fを持つことは可能ですか?言い換えれば、コミットがmerged-inブランチ上にあった場合、私はそれを表示したくありません。

+1

したがって、 'D'と' Z'のどちらがマージされたブランチの一部であったのかをgitはどのように知っていますか? – Romain

+1

マスターからマージすると、前のマスターコミットがマージの最初の親です。 'のgit log'は--first-parent''でのみコミットを表示することができますので、あなたは右のもの – CharlesB

+0

が重複する可能性を取得します(http [私はGitのログのみ特定のブランチのための変更を確認するために実行する方法は?]:/ /stackoverflow.com/questions/4649356/how-do-i-run-git-log-to-see-changes-only-for-a-specific-branch) –

答えて

94

git logあなたがtopic歴史を取得することはできませんので、オプション--first-parentを持っています。

masterからマージすると、masterコミットはマージの最初の親です。 Gitログは--first-parentを持つコミットだけを表示することができるので、適切なものを得ることができます。

+15

+1 '--first-parent'はそれをしない:)'と組み合わせて使用​​すると、マージを非表示にすることができ--no-merges'これはtig' https://github.com/jonas/tig 'で素晴らしい作品 – c00kiemon5ter

+1

コミット –

-2

これは機能しませんか?

git log master 
git log --stat master 
+0

これらは動作しません。マージコミットには2つの親があります。両親から追跡されたものはすべて「マスター」支店にあります。 – GoZoner

16

特定の状況で役に立つことでしょうどの--first-parentに依存しないこのついて行くには他の一般的な方法は、

git log origin/topic ^origin/masterこれはあなたのすべてとorigin/topicのログを与える分岐除外フィルタを使用して...ありorigin/masterのコミットが削除されました。

また、--no-mergesに追加して、マージコミットを隠すこともできます。

logの代わりにshortlogを使用すると、リリースノートやブランチ内のwhatsの通信に便利な簡略化された要約が得られます。

更新
これを再読み込みした後、あなたが実際にしたいと思う私が掲示何のほぼ逆。しかし、それはマスターとfoo(git log origin/master ^origin/foo)にあるすべてのものを除外してしまうでしょう。しかし、あなたが求めるものを得ることもできます(マージの一部であるすべてのコミットを隠す)git log origin/master --no-merges

関連する問題