git cherry-pick не работает

Я пытаюсь вишневый выбрать фиксацию от master и получить его в текущей производственной отрасли. Однако, когда я выполняю git cherry-pick <SHA-hash>, Я просто получаю это сообщение:

# On branch prod_20110801
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#   site/test-result/
 nothing added to commit but untracked files present (use "git add" to track)
 The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

    git commit --allow-empty

Otherwise, please use 'git reset'

Примечание: я пробовал делать сброс и сброс -- hard HEAD^, и ни один, казалось, ничего не менял.

Я не понимаю, почему это не работает для меня.

любое понимание, советы или идеи о том, как это решить, было бы полезно~!

4 ответов


Git разрешает cherry-pick как no-op - все изменения, внесенные этой фиксацией, были введены некоторой фиксацией в вашей текущей ветви. (Во всяком случае, так думает ГИТ.) Убедитесь, что фиксация, которую вы выбираете, еще не была каким-то образом объединена, как правильное слияние, ребазирование/выбор вишни или фрагментарный патч. (Используйте git show <commit-id> чтобы увидеть разницу.)


в моем случае это сводило меня с ума, так как было совершенно очевидно, что конкретное обязательство, которое я хотел выбрать, было не был объединен в мою текущую ветку.

получается, у кого-то уже черри выбрала фиксацию за неделю до этого. The изменения, но не конкретный ша, были уже в моей текущей ветви, и я их не заметил.

Проверьте файлы, которые вы пытаетесь выбрать. Если у них уже есть изменения, версия фиксации уже была выбрана или добавлена другим способом. Таким образом, нет необходимости снова собирать вишню.


Также обратите внимание, что добавление пустого файла (например,.gitkeep) к дереву рассматривается cherry-pick как пустая фиксация.


Итак, вот еще одна запутанная ситуация, когда это может возникнуть: у меня было следующее:

git log screenshot

Я пытался cherry pick 9a7b12e, который, по-видимому, ничего-он даже пытался сказать мне на этой строке в выходе журнала git, что 4497428 был тем, что я действительно хотел. (То, что я сделал, просто искал сообщение фиксации и схватил первый хэш, который я видел, у которого он был). В любом случае, просто хочу, чтобы люди знали, что есть другой способ получить обманом в попытке вишни выбрать нет op.