Как заключить 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>
$

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

4 ответов


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


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


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

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

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


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

посмотреть совершить 3e7dd99 (16 Авг 2018) by Nguyễn Thái Ng Duc Duy (pclouds).
(слитый Junio C Hamano -- gitster -- in совершить 39e415c, 20 авг 2018)

cherry-pick: fix --quit не удалять CHERRY_PICK_HEAD

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

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