Подтвердить что ты не робот

Как заключить Git Cherry-Pick?

Вчера я перебрал две строчки в мою основную ветку, одна из которых вызвала конфликты слияния, и я разрешил их, совершил и подтолкнул их к происхождению. Сегодня я пытаюсь вытащить с сервера, когда я получаю следующую ошибку:

$ git pull
fatal: You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).
Please, commit your changes before you can merge.
$

Git статус читает:

$ git status
# On branch main
# Your branch is behind 'origin/main' by 2 commits, and can be fast-forwarded.
#
$

Я пробовал следующее безрезультатно:

$ git cherry-pick --continue
usage: git cherry-pick [options] <commit-ish>
$

Любая идея о том, как я могу это решить? Спасибо заранее!

4b9b3361

Ответ 1

Решено, что: rm .git/CHERRY_PICK_HEAD Я понимаю, что это опасно, поскольку это не гарантирует внутреннюю согласованность внутри git, но до сих пор никаких проблем для меня...

Ответ 2

В следующий раз попробуйте git cherry-pick --abort, иначе то, что вы сделали, должно работать более или менее.

Ответ 3

Если git cherry-pick --continue не работает, это означает, что git слишком старый: этот параметр был введен для git 1.7.8 (декабрь 2011) в commit 5a5d80f

Он работает, отбрасывая первую команду из .git/sequencer/todo и выполняя оставшиеся вишни, перечисленные там, с опциями (думаю, "-s" и "-X" ) из начальной команды, указанной в разделе ".git/sequencer/opts".

В эти дни (2014), это будет команда для использования, когда вы увидите "You have not concluded your cherry-pick".

Ответ 4

Начиная с моего предыдущего ответа от 2014 года, правильная команда в настоящее время (2018) - git cherry-pick --quit.
А до Git 2.19 (Q3 2018) " git cherry-pick --quit " не удалось удалить CHERRY_PICK_HEAD даже если мы не будем в сеансе cherry-pick после его возвращения, что было исправлено.

См. Коммит 3e7dd99 (16 августа 2018 г.) Нгуен Тхай pclouds Дуй (pclouds).
(Объединено Юнио К Хамано - gitster - в коммите 39e415c, 20 августа 2018 г.)

cherry-pick: исправить --quit, не удаляя CHERRY_PICK_HEAD

--quit должно быть --abort, но без восстановления HEAD.
Если оставить CHERRY_PICK_HEAD позади, это может привести к CHERRY_PICK_HEAD других команд в том, что cherry-pick все еще продолжается (например, " git commit --amend " откажется работать). Очисти это тоже.

Для --abort эта работа по удалению CHERRY_PICK_HEAD находится на " git reset ", поэтому нам больше ничего не нужно делать. Но давайте добавим дополнительные проверки в --abort тестах для подтверждения.

Ответ 5

Другой вариант: с Git 2.23 (Q3 2019), git cherry-pick --continue действительно будет работать!

Когда один шаг в многошаговом вишневом подборе или возврате сбрасывается или фиксируется, сценарий командной строки не смог заметить текущее состояние, которое было улучшено.

См. Коммит e981bf7 (01 июля 2019 г.) Филиппа Вуда (phillipwood).
(Объединено с Junio C Hamano - gitster - в коммите 8a4acc5, 19 июля 2019 г.)

git-prompt: улучшить cherry-pick/revert обнаружение

Если пользователь фиксирует или сбрасывает разрешение конфликта в середине последовательности вишневых пиков или CHERRY_PICK_HEAD тогда CHERRY_PICK_HEAD/REVERT_HEAD будет удалено, и поэтому в отсутствие этих файлов нам нужно проверить .git/sequencer/todo чтобы увидеть, есть ли это вишня или вернуться в прогресс.

Посмотрите, выполняется ли cherry-pick или revert, если пользователь совершил разрешение конфликта с помощью ' git commit ' в середине последовательности пиков или CHERRY_PICK_HEAD тогда CHERRY_PICK_HEAD/REVERT_HEAD не будет существовать, поэтому мы должны прочитать файл todo,