git logを実行して特定のブランチの変更のみを確認するにはどうすればよいですか?


395

リモート/マスターブランチを追跡するローカルブランチがあります。とを実行するgit-pullgit-log、ログには、現在のブランチだけでなく、リモートトラッキングブランチのすべてのコミットが表示されます。ただし、リモートブランチに加えられた変更は非常に多かったため、現在のローカルブランチに対して行われたコミットのみを確認する必要があります。

特定のブランチのコミットのみを表示するために使用するGitコマンドは何でしょうか?

ノート:

構成情報:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master

回答:


526

あなたのブランチがオフに作成されたと仮定するとmaster、その後、しばらくブランチに(であるが、分岐をチェックアウトし、あなたがしています):

git cherry -v master

または

git log master..

ブランチにいない場合は、次のようにブランチ名を「git log」コマンドに追加できます。

git log master..branchname

ブランチがから作成された場合はorigin/master、のorigin/master代わりに言いますmaster


100
パーフェクト!git log --no-merges master..まさに私が必要としたものでした。
Highway of Life

3
@HighwayofLife:--no-merges特定のブランチからのコミットのみを表示しているように見えるかもしれませんが、実際にはマージに至らなかったコミットのみを表示しています
rynmrtn

5
親ブランチを入力/認識する必要がない、これを行う方法はどうですか?:)
ELLIOTTCABLE 2013年

1
変化率の感覚を得るために、私は以下の呪文:)コミットの相対的年齢に続く最初示さ著者の名前の1行のログ形式を、生産に使用:git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..
ノアサスマン

2
読んではいけませんか?git log master .. <your branch> --oneline --no-merges
Alex Nolasco

104

使用する:

git log --graph --abbrev-commit --decorate  --first-parent <branch_name>

これはターゲットブランチ専用です(もちろん--graph、-abbrev-commit --decorateはより洗練されています)。

重要なオプションは--first-parent:「マージコミットが表示されたときに最初の親コミットのみを追跡する」(https://git-scm.com/docs/git-log

コミットフォークが表示されなくなります。


25
--first-parent <branch_name>オプションです。動作します!
Parasrish 16

3
ブランチ名は何ですか、履歴だけを確認したいブランチですか?変更が3つしかないブランチでは、これは私に何百も表示しています。
Ed Randall

1
--first-parent <branch_name>私のためにも働いた!私はのエイリアスになりましたgit log --first-parent $current_branch_name --no-merges。@EdRandallに応答して、ブランチ上のコミット+ブランチ元のコミットが表示されます。例:
レイチェル2017年

2
おっと、すぐに提出しました。ここに例を示します。マスターにAとBをコミットしています。あなたnew_featureはマスターから分岐します。それにコミットCとDを追加します。次に、マスターにEとFを追加します。次に、マスターをにマージしnew_featureます。使用git log上のnew_feature、あなたが"マージマスター"、F、E、D、C、A、Bの使用を参照してくださいよgit log --first-parent new_feature --no-merges、あなたはD、C、A、Bを参照してくださいよ
レイチェル

24

特定のブランチで自分が実行したコミットのみが必要な場合は、以下のコマンドを使用します。

git log branch_name --author='Dyaniyal'

13

私が抱えていた問題は、これに類似していると思いますが、マスターが分岐点よりもはるかに先にいて、履歴が役に立たないということです。(分岐点までの移動には時間がかかります。)

いくつかの試行錯誤の後、これは私が大体望んだものを私に与えました:

git log --graph --decorate --oneline --all ^master^!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.