Gitのコミット履歴が次のようになっているとします:
A---B---C---D---E---F master
\ /
X---Y---Z topic
Git listにマスターA-Fのコミットのみを含めることは可能ですか?言い換えると、コミットがマージされたブランチで行われた場合、表示したくありません。
git log
にはオプション--first-parent
があるため、topic
履歴は取得されません。
master
からマージされると、master
コミットがマージの最初の親になります。 Gitログでは、-first-parentのコミットのみを表示できるため、適切なものを取得できます。
特定の状況で役立つ--first-parent
に依存しない、これに関する別の一般的な方法があります。ブランチ除外フィルターの使用
git log Origin/topic ^Origin/master
これにより、Origin/topic
のコミットがすべて削除されたOrigin/master
のログが得られます。
--no-merges
を追加することもできます。これにより、必要な場合とそうでない場合があるマージコミットが非表示になります。
もう1つの便利なヒントは、shortlog
の代わりにlog
を使用することです。これにより、リリースノートやブランチの内容の伝達に役立つ略式の要約が得られます。
更新
これを読み直した後、実際に私が投稿した内容のほぼ逆を望むでしょう。ただし、masterおよびfoo(git log Origin/master ^Origin/foo
)にあるすべてのものを除外することになります。ただし、git log Origin/master --no-merges
を使用して、必要なものを取得することもできます(マージの一部であるすべてのコミットを非表示にします)