que - how to use cherry pick git
¿Cómo concluir un Git Cherry-Pick? (4)
Desde mi respuesta anterior de 2014 , el comando correcto hoy en día (2018) es git cherry-pick --quit
.
Y antes de Git 2.19 (Q3 2018), " git cherry-pick --quit
" no pudo eliminar CHERRY_PICK_HEAD
, aunque no vamos a estar en una sesión de selección después de su devolución, que se ha corregido.
Ver commit 3e7dd99 (16 Ago. 2018) por Nguyễn Thái Ngọc Duy ( pclouds
) .
(Fusionada por Junio C Hamano - gitster
- en commit 39e415c , 20 Ago. 2018)
cherry-pick: corregir --quit no eliminar CHERRY_PICK_HEAD
--quit
se supone que es--abort
pero sin restaurarHEAD
.
Dejar atrásCHERRY_PICK_HEAD
podría hacer que otros comandos cometan errores, ya quecherry-pick
todavía está en curso (por ejemplo, "git commit --amend
" se negará a funcionar). Limpiarlo tambiénPara
--abort
, este trabajo de eliminarCHERRY_PICK_HEAD
está en "git reset
" para que no tengamos que hacer nada más. Pero agreguemos verificaciones adicionales en--abort
pruebas de--abort
para confirmar.
Ayer seleccioné dos commits en mi rama principal, uno de ellos causó conflictos de fusión y los resolví, los comprometí y los empujé hasta el origen. Hoy intento sacar del servidor cuando aparece el siguiente error:
$ git pull
fatal: You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).
Please, commit your changes before you can merge.
$
Lecturas de estado de Git:
$ git status
# On branch main
# Your branch is behind ''origin/main'' by 2 commits, and can be fast-forwarded.
#
$
He intentado lo siguiente en vano:
$ git cherry-pick --continue
usage: git cherry-pick [options] <commit-ish>
$
¿Alguna idea sobre cómo podría resolver esto? ¡Gracias por adelantado!
La próxima vez prueba git cherry-pick --abort
, de lo contrario, lo que hiciste debería funcionar más o menos.
Resuelto con lo siguiente: rm .git/CHERRY_PICK_HEAD
Me doy cuenta de que esto es peligroso ya que esto no garantiza la consistencia interna dentro de git, pero no hay problemas para mí hasta ahora ...
Si el git cherry-pick --continue
no funciona, eso significa que git es demasiado viejo: esa opción se introdujo para git 1.7.8 (diciembre de 2011) en github.com/git/git/commit/…
Funciona al descartar la primera instrucción de .git / sequencer / todo y realizar las selecciones de cerezas restantes allí enumeradas, con opciones (pensar "
-s
" y "-X
") del comando inicial enumerado en ".git/sequencer/opts
".
Estos días (2014), ese sería el comando que utilizarías cuando veas " You have not concluded your cherry-pick
".