Как игнорировать выбранные вишни коммиты, когда распечатка фиксирует разницу с полностью объединенной веткой - PullRequest
2 голосов
/ 28 июня 2019

В модели ветвления, где одна ветвь A всегда объединяется с другой B, как я могу перечислить все коммиты в B, но не в A, игнорируя все выбранные вишни коммиты и слияния?

     a1-------b2' -- A
   /    \       \
 b1--b2--m1--b3--m2--b4 -- B

b2': cherry-picked commit

Inв этом случае он должен перечислить коммиты b3, b4.

Некоторые исследования в руководстве по git:
Игнорирование слияний и выделенных коммитов уже решено с помощью опций --no-merges и --cherry-* git-log команда.Но --cherry-* используют симметричную разность коммитов (то есть A...B), чтобы сопоставить вишневые пики.В этом примере commit b2 не является его частью.git log --cherry A...B возвращает b2, b3, b4.

Пример можно воспроизвести с помощью:

mkdir reprod; cd reprod; git init
git check-out -b B
git commit -m "b1" --allow-empty
git commit -m "b2" --allow-empty
git check-out -b A B^{/b1}
git commit -m "a1" --allow-empty
git cherry-pick --allow-empty B^{/b2}
git check-out B
git merge A^{/a1} --no-edit
git commit -m "b3" --allow-empty
git merge A^{/b2} --no-edit
git commit -m "b4" --allow-empty
git log A...B --cherry

1 Ответ

0 голосов
/ 28 июня 2019

(Неудачная гипотеза - хранится здесь только для истории)

Похоже, вам придется использовать --left-only / --right-only здесь.

См. Вthis абзац .

Например, --cherry-pick --right-only A...B пропускает те коммиты из B, которые находятся в A или эквивалентны патчу для коммита в A. Другими словами, в этом списке+ фиксируется с git cherry A B.Точнее, --cherry-pick --right-only --no-merges дает точный список.

Разве это не ваш точный случай?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...