比較Git コミット範囲のダブルドット ".." とトリプルドット "..." の違いは何ですか? 、より頻繁に役立つ質問です。
以下が と同じ一連のコミットを生成するかどうかを明確にしたいと思いますgit log A..B
。
# version 1
git log --right-only A...B
# version 2
#
# (The sed part keeps only the righthand lines, and strips the > character)
git log --left-right --format=oneline A...B | sed -n "s/^>//p"
それらは、同じことを達成するためのより回りくどい方法のように思われます。
最初の動機は、これらのコマンドの意味をより深く理解することでした。これには、すでにチェリーピックされたコミットを無視することが含まれます。
# version 1a
#
# Literally taken from the git-log help page, which explains what this means
git log --cherry-pick --right-only A...B
# version 2a
#
# This is a simplified version of something in the git code. (In particular,
# in git-rebase--interactive.sh.)
git log --left-right --cherry-pick --no-merges --format=oneline A...B | sed -n "s/^>//p"
この質問の拡張は、この種の「一方的な」チェリーピック除去を行うために、対称差 (つまり、トリプル ドット) が必要な理由を尋ねることです。たとえば、チェリー ピックの修正を含む、B での一意のコミットを見つけるには、次のような簡単なことはできないはずです。
git log --cherry-pick A..B
それは、すべての A コミットをA..B
. (つまり、この架空のコマンドでは、git は、チェリー ピッキング ロジックを適用しようとする前に、A に関連するものをすべて破棄します。)