Ответ 1
Решено, что: rm .git/CHERRY_PICK_HEAD
Я понимаю, что это опасно, поскольку это не гарантирует внутреннюю согласованность внутри git, но до сих пор никаких проблем для меня...
Вчера я перебрал две строчки в мою основную ветку, одна из которых вызвала конфликты слияния, и я разрешил их, совершил и подтолкнул их к происхождению. Сегодня я пытаюсь вытащить с сервера, когда я получаю следующую ошибку:
$ 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>
$
Любая идея о том, как я могу это решить? Спасибо заранее!
Решено, что: rm .git/CHERRY_PICK_HEAD
Я понимаю, что это опасно, поскольку это не гарантирует внутреннюю согласованность внутри git, но до сих пор никаких проблем для меня...
В следующий раз попробуйте git cherry-pick --abort
, иначе то, что вы сделали, должно работать более или менее.
Если 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
".
Начиная с моего предыдущего ответа от 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
тестах для подтверждения.
Другой вариант: с 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
,