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