Git:マージされたブランチからではなく、このブランチのコミットをリストする方法


90

gitのコミット履歴が次のようになっているとします。

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

マスター、AFのコミットのみをgitリストにすることは可能ですか?言い換えると、コミットがマージされたブランチで行われた場合、それを表示したくありません。


2
だから、どのようにするかを知るGITうDZマージされた枝の一部でしたか?
ロマン・

2
マスターからマージされる場合、前のマスターコミットがマージの最初の親になります。git logでコミットのみを表示できる--first-parentので、適切なものを取得できます
CharlesB 2012

回答:


133

git logオプション--first-parentがあるので、取得できませんtopic履歴を。

からマージされるmasterと、masterコミットはマージの最初の親になります。Gitログでは、-first-parentを使用してコミットのみを表示できるため、適切なものを取得できます。


25
+1--first-parentはそれを行い--no-mergesます:)あなたと組み合わせるとマージコミットを隠すことができます
c00kiemon5ter 2012

私は賛成しましたが、それでも私の答えと比較して過剰に思えます
UpAndAdam

22

TLDRgit log origin/master --no-mergesマスターのログを提供し、マージされたコミット(この場合はx、y、z)を除外します

元のポイント

これに依存しない別の一般的な方法があります --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


0

チャールズによる答えは私のために働きます。

git log has option --first-parent --no-merges, so you won't get topic history.

ただし、Git Extension、SourceTree、Tortoise Git、などのGitアクティビティにグラフィックユーザーインターフェイスを使用している場合

次に、ツールの最初の親をチェックする直接オプションがあります。ほとんどの人がグラフィックインターフェイスを簡単に感じるので、私はこの答えをリストに追加しようと思いました。必要に応じて、ツールからその特定のブランチからすべてのコミットを直接チェリーピックできます。

2つのツールの例を添付しました。他のツールでも同様です。[これはプライベートリポジトリであるため、ユーザー名、gitリポジトリ名をぼかしましたが、ツールから最初の親を使用する方法を理解できます。 ]

  1. Git拡張
    • Git拡張機能を開きます->コミットを表示する機能ブランチをチェックアウトします。画像に示すように、最初のコミットを選択するオプションがあります。

ここに画像の説明を入力してください

  1. Tortoise Git
    • リポジトリフォルダーを開きます-> Tortoise Gitからログを表示->ブランチをチェックアウトし、画像に示すように最初のコミットを選択します

ここに画像の説明を入力してください


-3

これは機能しませんか?

git log master
git log --stat master

いいえ、それらは機能しません。マージコミットには2つの親があります。これらの親の両方から追跡するすべてのものは、「マスター」ブランチにあります。
GoZoner 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.