2012-09-26 12 views
34

Soy bastante nuevo en el uso de git, y lo uso para contribuir con la ROM de Android AOKP. Creé algunas ramas, modifiqué el código y cargué las confirmaciones que se fusionaron en el extremo remoto. Pero en mi repositorio local, esas ramas siguen apareciendo (aunque aparezcan sin cambios). El problema es que cuando creé esas ramas, lo hice directamente desde la subcarpeta que necesitaba ser modificada, por lo que no tengo ramas "superiores" para ir. Y debido a eso, no puedo eliminar esas ramas - git tels me error: Cannot delete the branch 'MyMods' which you are currently on.¿Cómo puedo eliminar (o fusionar) una sucursal local de Git en la que estoy actualmente?

Entonces, ¿qué puedo hacer para deshacerme de esas sucursales?

+0

Git no permite esto porque es un poco inteligente que esta gente: https: // www. youtube.com/watch?v=zE8el_qscvE – Krumia

Respuesta

50

Pedido una rama diferente en primer lugar, antes de eliminarlo:

git checkout master 
git branch -d MyMods 

Además, las ramas no tienen nada que ver con las carpetas. Git siempre rastrea todo el repositorio a la vez, con todas sus carpetas y archivos. Una rama no es más que un puntero a una única confirmación, o instantánea, en el historial del repositorio.

+0

Entiendo la diferencia entre lo que hace git y las carpetas físicas. Odio ver una advertencia cada vez que ejecuto "repo sync" que mi sucursal está detrás de un número de compromisos, y como ya terminé, quiero deshacerme de él. Pero si busco una rama maestra, ¿no me encontraré con los mismos problemas porque entonces la rama maestra se quedará allí sin commits? – user496854

+0

Seguí este tutorial iriginal: http: //rootzwiki.com/topic/22424-aokp-gerrit-tutorial, y me hizo crear una rama directamente en la aplicación que estaba modificando. Entonces, ¿quieres decir que tengo que verificar todo el árbol de AOKP, y cómo afectará eso a mi sincronización de repositorio normal? – user496854

+0

'git checkout master' (o cualquier otra rama) no da ninguna respuesta, el comando parece tardar una eternidad. Creo que una rama está rota de alguna manera, así que quiero eliminarla. –

3

Sí solo pago y envío otra rama (tal vez maestro) y luego:

git checkout master git branch -d thebran

0

Pero en mi repositorio local, aquellas ramas siguen apareciendo (incluso aunque aparecen como si no tuvieran cambios).

Las sucursales se mostrarán en su repositorio local a menos que las elimine. No desaparecen cuando los empujas.

Las respuestas anteriores le indican cómo eliminar una rama. Sin embargo, agregaría que usar la opción -D es un poco más poderoso. Esta opción elimina la rama independientemente de su estado fusionado (ONU):

git branch -D branchName 

es la bomba atómica de eliminación rama. Use con cuidado.

+0

la publicación original indica específicamente que no me permitirá eliminar la rama porque actualmente estoy en ella, y no hay ramas más altas para moverme. Entonces, ¿cómo ayuda tu respuesta? – user496854

+0

Tendrá que cambiar de ramas primero - se olvidó de agregar eso. Y mi comentario también apunta a la otra respuesta que dice que solo puedes borrar una rama en la que no estás. – gitlinggun

+0

¿Qué quiere decir con "ramas superiores"?Esto no significa nada en el mundo git. – gitlinggun

1

Si la rama no puede eliminar es un worktree entonces puede que tenga que eliminar esa worktree primera:

rm -r MyMods 
git worktree list # shows MyMods 
git worktree prune 
git worktree list # doesn't show MyMods 
git branch -d MyMods 
Cuestiones relacionadas