Estoy tratando de seleccionar una confirmación del maestro y llevarla a la rama de producción actual. Sin embargo, cuando ejecuto git cherry-pick <SHA-hash>
, recibo este mensaje:
# 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: Intenté hacer un reinicio y un reinicio --hard HEAD ^, y ninguno pareció cambiar nada.
Estoy confundido en cuanto a por qué esto no funciona para mí.
¡Cualquier idea, consejo o idea sobre cómo resolver esto sería útil ~!
git
branching-and-merging
cherry-pick
Jay Taylor
fuente
fuente
Respuestas:
Git está resolviendo la elección selectiva como una operació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á seleccionando no se haya fusionado ya de alguna manera, ya sea como una combinación adecuada, rebase / selección selectiva o parche por partes. (Use
git show <commit-id>
para ver la diferencia)fuente
En mi caso, esto me estaba volviendo loco, ya que era bastante obvio que la confirmación específica que quería seleccionar no se había fusionado con mi rama actual.
Resulta que alguien ya había elegido el compromiso una semana antes. Los cambios , pero no el SHA específico, ya estaban en mi rama actual y no los había notado.
Compruebe los archivos que está intentando seleccionar. Si ya tienen los cambios, una versión de la confirmación ya ha sido seleccionada o agregada de otra manera. Por lo tanto, no es necesario volver a recogerlo.
fuente
git log --graph --pretty --decorate --oneline
para ver si un SHA determinado está en mi rama o no. Vea mi respuesta a continuación sobre cómo también puede confundirse si piensa que el mensaje de confirmación es indicativo del cambio: hay una situación en la que no lo es, y eso es lo que me llevó a esta pregunta originalmente. El cerebro de uno tiende a tomar esos atajos y ocasionalmente pueden volver a morderlo.También tenga en cuenta que agregar un archivo vacío (por ejemplo
.gitkeep
) al árbol es considerado por cherry-pick como una confirmación vacía.fuente
Entonces, aquí hay otra situación confusa en la que esto puede surgir: tuve lo siguiente:
Estaba tratando de seleccionar 9a7b12e, que aparentemente no es nada; incluso trató de decirme en esa línea en la salida del registro de git que 4497428 era lo que realmente quería. (Lo que hice fue buscar el mensaje de confirmación y agarrar el primer hash que vi que lo tenía). De todos modos, solo quiero que la gente sepa que hay otra forma en que puedes ser engañado para intentar elegir una operación no.
fuente