gitcommitの履歴が次のようになっているとします。
A---B---C---D---E---F master
\ /
X---Y---Z topic
マスター、AFのコミットのみをgitリストにすることは可能ですか?言い換えると、コミットがマージされたブランチ上にあった場合、それを表示したくありません。
gitcommitの履歴が次のようになっているとします。
A---B---C---D---E---F master
\ /
X---Y---Z topic
マスター、AFのコミットのみをgitリストにすることは可能ですか?言い換えると、コミットがマージされたブランチ上にあった場合、それを表示したくありません。
git log
オプションがあるので、履歴--first-parent
を取得できません。topic
からマージされるmaster
と、master
コミットはマージの最初の親になります。Gitログでは、-first-parentを使用してコミットのみを表示できるため、適切なものを取得できます。
TLDR:git 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
チャールズによる答えは私のために働きます。
git log has option --first-parent --no-merges, so you won't get topic history.
ただし、Git Extension、SourceTree、Tortoise GitなどのGitアクティビティにグラフィックユーザーインターフェイスを使用している場合は、
次に、ツールの最初の親をチェックする直接オプションがあります。ほとんどの人がグラフィックインターフェイスを簡単に感じるので、私はこの答えをリストに追加しようと思いました。必要に応じて、ツールからその特定のブランチからすべてのコミットを直接チェリーピックできます。
2つのツールの例を添付しました。他のツールでも同様です。[これはプライベートリポジトリであるため、ユーザー名、git repo名をぼかしましたが、ツールから最初の親を使用する方法を理解できます。 ]
これは機能しませんか?
git log master
git log --stat master