2013-03-17 5 views
0

Я все еще новичок в git, и я наткнулся на эту команду вишневого выбора. Предположим, что I вишня-выбрать фиксацию (давайте назовем ее CA) от devel ответвление на ведущий ветка, и у них теперь есть разные идентификаторы sha1, если то, что я интерпретирую правильно.git cherry-pick SHA1 ID

Так что мой вопрос, если позже я хочу проверить, что «различие» между развейте филиал и мастер ветвь с помощью git cherry, чтобы выяснить, какие коммиты будут в конечном итоге толкнули мастера и который не делает, но так как у коммитов (CA) I вишня выбрала только один SHA1-идентификатор, поэтому, когда я выполню git cherry master devel, что это говорит мне? Означает ли это, что CA помещается в мастер? Или это говорит мне, что CA НЕ толкается к хозяину, так как они не используют один и тот же идентификатор SHA1?

+0

git cherry manpage («man git cherry» или «git help cherry»), кажется, отвечает на ваши вопросы напрямую - и это коротко, там нет ничего особенного _but_ соответствующих ответов. – jthill

+0

Да, я прочитал man-страницу, но, я думаю, я просто запутался в том, как работает git cherry. Сбрасывает ли он коммиты, которые не сливаются вверх по течению, сравнивая каждый идентификатор коммитов или сравнивая их фактические различия? – 2013-03-17 15:30:36

ответ

1

git cherry использует git patch-id для сравнения коммитов. Две коммиты, вносящие такое же изменение, будут иметь один и тот же идентификатор патча, а git cherry скажет, что изменение уже существует в восходящем потоке, префикс фиксации знаком дефис/минус (-).

Значит, в вашем случае git cherry master devel выводит фиксацию, выбранную вами, с префиксом дефиса/минуса (-), что указывает на то, что внесенное им изменение уже существует в master. Записи о внесении изменений, которые не существуют в master, будут иметь префикс с плюсом (+).

Это объясняется в man git-cherry.

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