git branch -d da una advertencia

91

Solo quiero comprender mejor el mensaje de advertencia después de eliminar una sucursal local

advertencia: eliminar la rama 'old_branch'que se ha fusionado 'refs/remotes/origin/old_branch', pero que aún no se ha fusionado HEAD.

usuario1322228
fuente
29
si fusiona --squash your old_branch, recibirá esta advertencia siempre que lo elimine localmente. Cuando aplastando su índice de reajuste está, por tanto, no coincide con old_branch HEAd
Antoine Wils
Si bien las otras respuestas son correctas, el comentario de Antoine fue la razón al menos en mi caso.
Squrppi

Respuestas:

66

Esto solo le advierte que tiene cambios insertados en la rama origin, pero no están fusionados master, por lo que solo los está eliminando localmente.

Le advierte que ya no tiene una copia local de esa rama, pero existe en origin

Si también desea eliminar la rama remota, use git push --delete origin old_branch

cjhveal
fuente
9
Sí, masterno está involucrado en esto. Te refieres a la rama actual, más bien. ;)
Fernando Espinosa
1
Recibo esta advertencia incluso si hago una git branch -d branch_nameque se supone que solo debe eliminar la rama localmente. ¿Por qué es necesaria la advertencia en este caso?
Akshay Damle
2
Pero origin / old_branch se fusiona en origin / master. Más tarde hice git pull origin en la rama maestra. Sigue siendo el mismo error. ¿No es este error en GH?
vikramvi
36

Suponiendo que actualmente ha realizado el mastercheck out, significa que los cambios realizados old_branchno están presentes en master. Sin embargo, ellos están presentes en old_branchel origin.

Karl Bielefeldt
fuente
4
Sí. ¡Esta es la respuesta correcta! "pero aún no combinado con HEAD", HEADaquí se hace referencia al HEAD de la rama principal local.
Devy
3
Pero origin / old_branch se fusiona en origin / master. Más tarde hice git pull origin en la rama maestra. Sigue siendo el mismo error. ¿No es este error en GH?
vikramvi
1
@vikramvi Suponiendo que haya masterverificado localmente, aún puede ocurrir si el SHA de cualquiera de las confirmaciones ha cambiado; es decir, se basó origin/old_branchen origin/master. Incluso si fuera un avance rápido, esto generará un nuevo SHA para cada nueva confirmación de origin/old_branch, lo que hará que git vea los SHA originales en su local old_branchcomo no fusionados después de extraer los cambios a su masterrama local . Puede ver esta respuesta y esta respuesta de por qué ocurre esto.
8

Esto significa que su sucursal local old_branchestá actualizada con la sucursal remota old_branchen remota, originpero no está fusionada con la sucursal masterque se considera la sucursal principal en el repositorio.

Es solo una precaución de git. Te da una pista: ¿tal vez hiciste tu trabajo en la rama de tema y te olvidaste de fusionarla con la rama principal?


actualizar

Git te advierte que no pierdas tus cambios. Por ejemplo, si no tiene su old_branchgit maestro, no le permita ni siquiera eliminar la rama que no está fusionada con el maestro (bueno, lo permite, pero con la clave -Dque es la force-deleteopción).

Max Komarychev
fuente
7
No necesariamente master, pero el actual HEAD.
Llama congelada
Entonces, la -D es cuando no ha compartido la rama que se está eliminando (realmente se confirma) con ninguna rama remota. Si bien la advertencia es para informarle que ha compartido la rama (confirmaciones) con el control remoto, pero simplemente no está fusionada con HEAD. HEAD es HEAD, el control remoto / refs / HEAD no es lo mismo. Pero corríjame si me equivoco con respecto a las diferencias entre HEAD remoto y HEAD local.
Eric
7

Para agregar a las otras respuestas, esto también puede significar que el cambio podría fusionarse con el maestro, solo que su copia local del maestro aún no lo refleja. De cualquier manera, esto solo le informa que la copia local de su maestro no tiene los cambios que presionó en el origen. Fusionado / No fusionado ... tal vez, tal vez no

Mithun Nair
fuente