102

gitcommitの履歴が次のようになっているとします。

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

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

4

4 に答える 4

143

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

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

于 2012-04-20T14:44:08.080 に答える
21

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

元のポイント

これを回避する別の一般的な方法があり--first-parentますが、これは特定の状況で役立ちます。ブランチ除外フィルターを使用する

git log origin/topic ^origin/masterorigin/topicこれにより、すべてorigin/masterのコミットが削除され たログが得られます。

--no-mergesまた、必要な場合と不要な場合があるマージコミットを非表示にするものを追加することもできます。

もう1つの便利なヒントは、shortlog代わりに使用logすることです。これにより、リリースノートやブランチの内容の伝達に役立つ、より簡潔な要約が得られます。

更新
これを読み直した後、あなたは実際に私が投稿したもののほぼ逆を望むでしょう。ただし、masterとfoo(git log origin/master ^origin/foo)にあるすべてのものを除外することになります。ただし、要求したものを取得することもできます(マージの一部であるすべてのコミットを非表示にします)。git log origin/master --no-merges

于 2014-10-27T20:38:56.230 に答える
0

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

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

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

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

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

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

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

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

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

于 2020-10-27T07:40:39.110 に答える
-4

これは機能しませんか?

git log master
git log --stat master
于 2012-04-20T14:28:23.537 に答える