2012-09-19 20 views
15

Necesitaba unir dos ramas - second en first y luego deshacerse de second. Esto es lo que hice:¿Por qué Git no me permite eliminar de forma segura una sucursal?

  • git clone d el proyecto para obtener una copia fresca
  • git checkout --track origin/second, hizo algunos cambios, y se comprometieron
  • git checkout --track origin/first, hizo algunos cambios, y se comprometió
  • git merge second (GIT dice " fusionar adoptada por recursiva ")
  • git branch -d second

Entonces git dice:

$ git branch -d second 
warning: not deleting branch 'second' that is not yet merged to 
     'refs/remotes/origin/second', even though it is merged to HEAD. 
error: The branch 'second' is not fully merged. 
If you are sure you want to delete it, run 'git branch -D second'. 

¿Por qué sucede esto? Nunca antes recibí este mensaje después de una fusión. La fusión funcionó bien, sin conflictos. ¿Cómo elimino con seguridad la rama second?

+0

'git checkout second' seguido de' git push origin second' hace que git deje de quejarse, pero no entiendo por qué. –

+1

Una conjetura descabellada, pero ¿tal vez git se queja de que no has pulsado 'segundo' al origen antes de eliminarlo? También asegúrate de que no estás en "HEAD separado" estado – knittl

+0

@knittl sí, parece que tienes razón, pero ¿por qué importaría si he pulsado 'segundo '? –

Respuesta

32

Según mis experimentos y los comentarios de @ knittl y @ twalberg, parece que git solo quería que insertara mis cambios en la rama second antes de eliminarlo.

que hice:

$ git checkout second 
$ git push origin second 
$ git checkout first 
$ git branch -d second 

que funcionó sin advertencias.

+0

¿No podría 'git branch -D second' resolverlo también o es una práctica peligrosa? – Bart

+0

@Bart depende de lo que quiere decir con "resolverlo". Hacer eso no tendría el mismo resultado que mi solución: el estado del control remoto de 'origen' sería diferente. –

+0

@Bart que solo debe usarse cuando sepa lo que está haciendo. Git en su mayoría da advertencias útiles, por lo que siempre es mejor no forzar las cosas en él. – cst1992

Cuestiones relacionadas