Фон: У меня есть две ветви, мастер и стабильный, с множеством коммитов на хозяине, которые не на стабильном уровне. Я хочу, чтобы вишня выбрала ряд этих коммитов для стабильности, а затем смогла использовать git log --merges-only stable..master
, чтобы увидеть, что осталось.Могу ли я использовать git cherry-pick <sha> 'и есть ли git log foo..bar?
Однако, если я просто вишневый, git рассматривает их как две коммиты, и поэтому команда «git log» не помогает. Например. С учетом этого:
# create a repo
mkdir cherry
cd cherry
git init
# add a commit on master
touch foo.txt
git add foo.txt
git commit -a -m 'commit 1'
# create a stable branch
git checkout -b stable
# add two more commits to master
git checkout master
touch bar.txt
git add bar.txt
git commit -m 'commit 2'
touch baz.txt
git add baz.txt
git commit -m 'commit 3'
# cherry-pick just one of those commits to stable
git checkout stable
git cherry-pick master
Тогда, я хотел бы быть в состоянии увидеть, что коммиты являются кандидатами на будущий вишневый сбор на хозяине, в идеале используя git log
, но это не реально ответить на мой вопрос:
> git log stable..master --pretty=oneline --no-merges
01550adab8993ceb1eec7bbc7a0e3de3550d63fc commit 3
8a3ea27aa50c887b603296bb9d4a36ccbfa35311 commit 2
Однако TIL о git cherry
:
> git cherry stable master
+ 8a3ea27aa50c887b603296bb9d4a36ccbfa35311
- 01550adab8993ceb1eec7bbc7a0e3de3550d63fc
Где записи с префиксом «+» являются кандидатами на будущее вишневого сбор.
Git рассматривает их таким образом, потому что они * являются * два различных фиксаций :-) ... 'вишневого pick' дифференциалы«выбрал вишневый»против своего родителя, а затем применяет это же изменение в 'HEAD' как новое коммит. То, что вам нужно (что git действительно предоставляет), состоит в том, чтобы сравнить * изменения *, сделанные, по-парному; см. ответ Магнуса Бэка. Обратите внимание, что это справедливый бит вычислительной работы (git должен вычислять различия, так же как и в команде 'cherry-pick', но теперь это нужно сделать для каждого фиксации вдоль вилки, а затем сравнить их все! быстро для того, что он делает, хотя). – torek