2016-12-06 2 views
1

Я делаю слияние сгустков коммитов с помощью cherry-pickCherry забрать набор фиксаций из другой ветви пропуска пустых фиксаций

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? А потом я к этой теме:

http://markmail.org/message/yowzaetyu32ulvz7

Это настолько плохо, что я просматриваю GIT версию 2.9.3 и даже нашел, что это cherry-pick не поддерживает ни --skip-empty или --empty-commpit=skip или любой другой.

У меня была проверка, что у git rev-list есть опция --remove-empty, но она просто не помогла.

ответ

3

Наконец-то я нашел решение.

git rev-list --reverse something-begin..something-end . | git cherry-pick --stdin 

Добавление точки к rev-list команды (то есть части пути) будет пропускать все пустые фиксаций для меня (что это --remove-empty для ??)

+0

Как сказано в документации, '--remove-empty' означает «Остановитесь, когда данный путь исчезнет с дерева». То есть, прекратите смотреть на более ранние версии полностью. – torek

+0

@torek Да, я прочитал эту строку, и я подтвердил, что это не то, что я хочу. но эта строка документа «Стоп, когда данный путь исчезает из дерева» недостаточно ясна, я просто не понимаю, что это значит. –

+0

Ну, рассмотрим, что делает 'git rev-list', если вы просто даете ему один фиксатор. Он печатает идентификатор этого коммита, а затем идентификатор родителя фиксации, а затем родительский идентификатор родителя, а затем * этот родительский родитель, а другой и т. Д. Когда это * останавливается * от родителя к родительскому? Обычный ответ: когда родителей больше нет. Но вы можете остановить его раньше. – torek

Смежные вопросы