gitのコミット履歴が次のようになっているとします。
A---B---C---D---E---F master
\ /
X---Y---Z topic
マスター、AFのコミットのみをgitリストにすることは可能ですか?言い換えると、コミットがマージされたブランチで行われた場合、それを表示したくありません。
gitのコミット履歴が次のようになっているとします。
A---B---C---D---E---F master
\ /
X---Y---Z topic
マスター、AFのコミットのみをgitリストにすることは可能ですか?言い換えると、コミットがマージされたブランチで行われた場合、それを表示したくありません。
git log
でコミットのみを表示できる--first-parent
ので、適切なものを取得できます
回答:
git log
オプション--first-parent
があるので、取得できませんtopic
履歴を。
からマージされるmaster
と、master
コミットはマージの最初の親になります。Gitログでは、-first-parentを使用してコミットのみを表示できるため、適切なものを取得できます。
--first-parent
はそれを行い--no-merges
ます:)あなたと組み合わせるとマージコミットを隠すことができます
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リポジトリ名をぼかしましたが、ツールから最初の親を使用する方法を理解できます。 ]
これは機能しませんか?
git log master
git log --stat master
D
とZ
マージされた枝の一部でしたか?