2011-08-15 12 views
66

Estoy tratando de seleccionar un compromiso de maestro y ponerlo en la rama de producción actual. Sin embargo, cuando ejecuto git cherry-pick <SHA-hash>, acabo de recibir este mensaje:git cherry-pick no funciona

# 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' 

Nota: He intentado hacer un reset y una cabeza --hard reinicio ^, y tampoco parecía que cambiar nada.

No estoy seguro de por qué esto no funciona para mí.

Cualquier información, consejo o idea sobre cómo resolver esto sería útil ~!

+0

Esto sucedió conmigo cuando accidentalmente intenté seleccionar cuidadosamente el compromiso equivocado. Ocurre a veces cuando se usa gitk. – cst1992

Respuesta

89

Git está resolviendo el pick-up como una opción no operativa; todos los cambios introducidos por esa confirmación han sido introducidos por alguna confirmación en su rama actual. (O eso es lo que piensa Git, de todos modos). Verifique que la confirmación que está recogiendo no se haya fusionado de alguna manera, ya sea como una combinación adecuada, rebase/cherry-pick o parche por partes. (Uso git show <commit-id> para ver el diff.)

+14

Gracias por su consejo, resultó que la recolección de cereza ya había tenido lugar y lo único que tengo que hacer es empujarlo a github. –

+0

Correcto, no me di cuenta de que estaba verificando el contenido de los archivos dados la identificación de compromiso. Fui a buscar la identificación de compromiso en el registro y no pude encontrarla. Resultó que ya estaba fusionado. – mparaz

7

En mi caso esto me estaba volviendo loco, ya que era bastante obvio que la específica cometer quería recogida de cereza habían no han fusionado en mi rama actual.

Resulta que alguien tenía ya cherry escogió el compromiso una semana antes. El cambia, pero no el SHA específico, ya estaban en mi rama actual, y no los había notado.

Compruebe el (los) archivo (s) que está intentando seleccionar. Si ya tienen los cambios, una versión de la confirmación ya se ha seleccionado o agregado de otra manera. Por lo tanto, no hay necesidad de recogerlo de nuevo.

+0

Estoy bastante seguro de que la confirmación específica es * nunca * en su sucursal cuando fue presentada por una selección de cereza, porque la selección de cereza será un nuevo hash, ¿verdad? ¿O estoy malentendido? – msouth

+0

@msouth Lo que originalmente quité de otras respuestas fue "la confirmación ya estaba fusionada", pero pude ver que no estaba * en mi rama. Sin embargo, tienes razón en que Cherry Pick siempre es un nuevo SHA. – pkamb

+0

Sí, estaba pensando "el compromiso específico, identificado por el hash", cuando escribí eso. Mi lenguaje era impreciso A menudo miro hacia atrás a través de la salida de 'git log -graph --pretty --decorate --oneline' para ver si un SHA dado está en mi rama o no.Vea mi respuesta a continuación sobre cómo puede confundirse basándose en que el mensaje de compromiso es indicativo del cambio; hay una situación en la que no es así, y eso es lo que me llevó a esta pregunta originalmente. El cerebro de uno tiende a hacer esos atajos y ocasionalmente pueden volver a morderlo. – msouth

1

También tenga en cuenta que la adición de un archivo vacío (por ejemplo, .gitkeep) al árbol es considerada por cherry-pick como una confirmación vacía.

+0

En mi caso, tuve una confirmación de reversión (que revertía una confirmación vacía) antes de mi intento de selección, así que supongo que cualquier cosa vacía probablemente hará que aparezca este mensaje. – lidkxx

0

lo tanto, aquí tenemos otro confusa situación donde esto puede surgir: Tenía la siguiente:

git log screenshot

yo estaba tratando de selección de la cereza 9a7b12e que al parecer es nada - que incluso trató de decirme en esa línea en la salida de registro de git que 4497428 era lo que realmente quería. (Lo que hice fue buscar el mensaje de confirmación y obtuve el primer hash que vi que lo tenía). De todos modos, solo quiero dejarle saber a la gente que hay otra manera en la que puedes ser engañado para intentar elegir una opción.

+0

No fue muy útil para usted desestimar sin explicación: esta es la reproducción exacta de un problema que tuve que me llevó a encontrar esta pregunta en mi búsqueda. Si tiene una recomendación para mejorar esto, por favor dígame en los comentarios en lugar de simplemente downvoting. – msouth

Cuestiones relacionadas