現在のブランチから分岐した時点以降のブランチのコミットのログを取得する最良の方法は何ですか? これまでの私の解決策は次のとおりです。
git log $(git merge-base HEAD branch)..branch
ドキュメントgit 差分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...branch
x、y、z、c、d、e を返します。
ベストアンサー1
リビジョン リストのコンテキストでは、はそれを定義するA...B
方法ですgit-rev-parse
。git-log はリビジョン リストを受け取ります。はリビジョンのリストを受け取りません - 1 つまたは 2 つのリビジョンを受け取り、はマニュアル ページで定義されている方法を意味するように構文git-diff
を定義しています。が明示的に定義しなかった場合、その構文は無効になります。マニュアル ページの「範囲の指定」セクションで説明されており、そのセクションのすべては、リビジョン範囲が有効な状況 (つまり、リビジョン リストが必要な場合) でのみ有効であることに注意してください。A...B
git-diff
git-diff
A...B
git-rev-parse
A...B
x、y、z だけを含むログを取得するには、git log HEAD..branch
(3 つではなく 2 つのドット) を試してください。これは と同じでgit log branch --not HEAD
、HEAD にないブランチ上のすべてのコミットを意味します。