Я пытаюсь выбрать фиксацию от мастера и поместить ее в текущую производственную ветку. Однако, когда я выполняю 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 ^, и, похоже, ничего не изменилось.
Я не понимаю, почему у меня это не работает.
Любые идеи, советы или идеи о том, как решить эту проблему, были бы полезны ~!
git
branching-and-merging
cherry-pick
Джей Тейлор
источник
источник
Ответы:
Git разрешает выбор вишни как запретную операцию - все изменения, внесенные этим коммитом, были внесены некоторым коммитом в вашей текущей ветке. (Или, во всяком случае, так думает Git.) Убедитесь, что коммит, который вы выбираете, еще не был каким-то образом объединен, как правильное слияние, rebase / cherry-pick или частичный патч. (Используйте,
git show <commit-id>
чтобы увидеть разницу.)источник
В моем случае это сводило меня с ума, поскольку было совершенно очевидно, что конкретная фиксация, которую я хотел выбрать, не была объединена с моей текущей веткой.
Оказывается, кто-то за неделю до этого уже выбрал коммит. Эти изменения , но не конкретный SHA, уже были в моей текущей ветви, и я не заметил их.
Проверьте файлы, которые вы пытаетесь выбрать. Если у них уже есть изменения, версия фиксации уже выбрана или добавлена другим способом. Таким образом, нет необходимости снова собирать вишню.
источник
git log --graph --pretty --decorate --oneline
чтобы узнать, находится ли данный SHA в моей ветке или нет. См. Мой ответ ниже о том, как вы также можете запутаться, полагая, что сообщение фиксации указывает на изменение - есть ситуация, когда это не так, и это то, что изначально привело меня к этому вопросу. Мозг имеет тенденцию делать эти короткие пути, и они могут иногда возвращаться, чтобы укусить вас.Также обратите внимание, что добавление
.gitkeep
в дерево пустого файла (например ) рассматривается cherry-pick как пустая фиксация.источник
Итак, вот еще одна запутанная ситуация, в которой это может возникнуть: у меня было следующее:
Я пытался выбрать 9a7b12e, который, по-видимому, ничего не стоит - он даже пытался сказать мне в этой строке в выводе журнала git, что 4497428 - это то, что я действительно хотел. (Я просто искал сообщение о фиксации и взял первый увиденный хэш, в котором оно было). Во всяком случае, просто хочу, чтобы люди знали, что есть еще один способ обмануть вас, пытаясь выбрать неоправданный вариант.
источник