278

ブランチが現在のブランチからブランチされてからのコミットのログを取得する最良の方法は何ですか? これまでの私の解決策は次のとおりです。

git log $(git merge-base HEAD branch)..branch

git-diffのドキュメントは、git diff A...Bが と同等であることを示していgit diff $(git-merge-base A B) Bます。一方、git-rev-parser1...r2のドキュメントには、として定義されていることが示されていr1 r2 --not $(git merge-base --all r1 r2)ます。

これらが異なるのはなぜですか?必要な差分が得られることに注意してくださいgit diff HEAD...branch。ただし、対応する git log コマンドは、必要以上のものを提供します。

写真では、次のように仮定します。

         x---y---z---枝
        /
---a---b---c---d---e---頭

コミット x、y、z を含むログを取得したいと考えています。

  • git diff HEAD...branchこれらのコミットを与える
  • ただし、git log HEAD...branchx、y、z、c、d、e が得られます。
4

10 に答える 10

195

リビジョン リストのコンテキストでは、それを定義するA...B方法です。git-rev-parsegit-log はリビジョン リストを受け取ります。git-diffリビジョンのリストを取りません。1 つまたは 2 つのリビジョンを取りA...B、マンページで定義されている方法を意味する構文を定義していますgit-diffgit-diffが明示的に定義されていない場合A...B、その構文は無効になります。マンページの「範囲の指定」セクションでgit-rev-parse説明されており、そのセクションのすべては、リビジョン範囲が有効な状況 (つまり、リビジョン リストが必要な場合) でのみ有効であることに注意してください。A...B

x、y、z のみを含むログを取得するには、git log HEAD..branch(3 つではなく 2 つのドット) を試してください。これは と同じでgit log branch --not HEAD、HEAD にないブランチのすべてのコミットを意味します。

于 2008-09-10T07:50:41.173 に答える
73
git cherry branch [newbranch]

masterあなたがブランチにいるとき、あなたが求めていることを正確に行います。

私もとても好きです:

git diff --name-status branch [newbranch]

これはあなたが求めているものとは正確には異なりますが、それでも同じコンテキストで非常に役立ちます。

于 2008-11-07T21:24:08.743 に答える
39

見たいのは、発信コミットのリストです。これを使用して行うことができます

git log master..branchName 

また

git log master..branchName --oneline

「branchName」は「master」の追跡ブランチとして作成されたと仮定します。

同様に、受信した変更を確認するには、次を使用できます。

git log branchName..master
于 2012-11-20T02:37:38.860 に答える
25

これは、私が投稿した回答に似ています: Preview a Git push

これらの関数を Bash プロファイルにドロップします。

  • gbout - git ブランチの発信
  • gbin - gitブランチの着信

これは次のように使用できます。

  • master の場合: gbin branch1 <-- master ではなく branch1 にあるものを表示します
  • マスターの場合: gbout branch1 <-- これにより、ブランチ 1 にないマスターの内容が表示されます

これは、どのブランチでも機能します。

function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}

function gbin {
    echo branch \($1\) has these commits and \($(parse_git_branch)\) does not
    git log ..$1 --no-merges --format='%h | Author:%an | Date:%ad | %s' --date=local
}

function gbout {
    echo branch \($(parse_git_branch)\) has these commits and \($1\) does not
    git log $1.. --no-merges --format='%h | Author:%an | Date:%ad | %s' --date=local
}
于 2010-05-14T00:41:36.710 に答える
20

Alex V's や NDavis などのいくつかの回答に似ていますが、まったく同じものはありません。

すでに当該ブランチにいる場合

使用:

git diff master...

いくつかの機能を組み合わせたもの:

  • 超短いです
  • 実際の変化を示します

アップデート:

これはおそらく であるはずですがgit diff master、これは指定された質問としてのコミットではなく、差分も示しています。

于 2016-05-09T12:03:54.447 に答える
10

そこに -p を投げて、いくつかのファイルの変更を確認します

git log -p master..branch

いくつかのエイリアスを作成します。

alias gbc="git branch --no-color | sed -e '/^[^\*]/d' -e 's/* \\(.*\\)/\1/'"

alias gbl='git log -p master..\`gbc\`'

ブランチの一意のコミットを表示します。

gbl
于 2013-08-14T20:21:13.690 に答える
6

master から分岐してからの現在の分岐のログを表示するには:

git log master...

現在 master にいる場合、master から分岐した後の別のブランチのログを表示するには:

git log ...other-branch

于 2015-10-12T22:48:17.950 に答える
4
git log --cherry-mark --oneline from_branch...to_branch

(3ドット)ただし、「=」ではなく「+」と表示される場合があります

于 2012-07-27T14:33:39.783 に答える
2

見つけた

git diff <branch_with_changes> <branch_to_compare_to>

コミットメッセージだけでなく差分全体も取得できるため、より便利です。すでにブランチにいて、変更を確認したい (たとえば) マスターの変更内容を確認したい場合は、次を使用できます。

git diff HEAD master
于 2013-10-11T09:53:12.310 に答える