Я делаю слияние сгустков коммитов с помощью cherry-pick
Cherry забрать набор фиксаций из другой ветви пропуска пустых фиксаций
git rev-list --reverse something-begin..something-end | git cherry-pick --stdin
и затем заканчивается с сообщением об ошибке
...
You are currently cherry-picking commit xxxyyy.
nothing to commit, working tree clean
The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:
git commit --allow-empty
If you wish to skip this commit, use:
git reset
Then "git cherry-pick --continue" will resume cherry-picking the remaining commits.
Я не хочет, чтобы выбрать любого из этих пустых коммитов.
Очень неприятно, что вводят git reset; git cherry-pick --continue
для каждой остановки и подсказок.
Почему он не предоставил опцию --skip-empty
? А потом я к этой теме:
Это настолько плохо, что я просматриваю GIT версию 2.9.3
и даже нашел, что это cherry-pick
не поддерживает ни --skip-empty
или --empty-commpit=skip
или любой другой.
У меня была проверка, что у git rev-list
есть опция --remove-empty
, но она просто не помогла.
Как сказано в документации, '--remove-empty' означает «Остановитесь, когда данный путь исчезнет с дерева». То есть, прекратите смотреть на более ранние версии полностью. – torek
@torek Да, я прочитал эту строку, и я подтвердил, что это не то, что я хочу. но эта строка документа «Стоп, когда данный путь исчезает из дерева» недостаточно ясна, я просто не понимаю, что это значит. –
Ну, рассмотрим, что делает 'git rev-list', если вы просто даете ему один фиксатор. Он печатает идентификатор этого коммита, а затем идентификатор родителя фиксации, а затем родительский идентификатор родителя, а затем * этот родительский родитель, а другой и т. Д. Когда это * останавливается * от родителя к родительскому? Обычный ответ: когда родителей больше нет. Но вы можете остановить его раньше. – torek