2012-09-05 27 views
5

Al realizar branch -a:Eliminación de una rama remota

$ git branch -a 
* master 
remotes/origin/HEAD -> origin/master 
remotes/origin/hello 
remotes/origin/master 

Y luego se quita la rama:

$ git branch -r -D origin/hello 
Deleted remote branch origin/hello (was c0cbfd0). 

Ahora veo:

$ git branch -a 
* master 
remotes/origin/HEAD -> origin/master 
remotes/origin/master 

La rama "hola" tiene sido eliminado Pero cuando voy a buscar:

$ git fetch 
From localhost:project 
* [new hello]  hello  -> origin/hello 

$ git branch -a 
* master 
remotes/origin/HEAD -> origin/master 
remotes/origin/hello 
remotes/origin/master 

Estoy tan confundida.
Creo que se ha eliminado, pero todavía está allí.

Respuesta

6

Es necesario eliminar desde el mando a distancia con el siguiente comando:

git push origin --delete hello 

Cuando se ejecuta git branch -rd origin/hello está eliminando su sucursal local única. El código anterior lo elimina del repositorio de origen.

3

Para delete a remote branch, utilice

git push origin :remotebranch 

Todo lo demás opera sólo en el repositorio local. En versiones más recientes de Git, también puede

git push origin --delete remotebranch 

Según el documentation, --delete significa lo mismo "como prefijo todos los árbitros con dos puntos".

Si se está preguntando sobre el significado de :, sigue la sintaxis estándar para push. Por lo general, usted escribiría

git push origin localbranch:remotebranch 

pero aquí, que reemplace localbranch con "nada", eliminando de forma efectiva la rama remota.

0
git push origin --delete somebranch 

es la forma de eliminar una rama remota. Si usted todavía está en una versión antigua de Git, puede que tenga que utilizar la sintaxis de edad:

git push origin :somebranch 

que se traduce en "empujar nada en somebranch en el mando a distancia orientado a por su origen". El comando es de la forma "git push (qué repositorio remoto) (qué referencia local) :(qué referencia remota). Omitir (qué referencia) se interpreta como" poner nada "en (qué referencia remota), eliminándolo de manera efectiva. nueva sintaxis es mucho más intuitivo.

1

tenga en cuenta que la rama git sólo permite borrar referencias locales.

git branch -r -D origin/hello 

eso sólo elimina el puntero local a un remote tracking branch, pero que no tiene ninguna influencia sobre el contenido de repositorio remoto en sí.
Solo el git push origin :hello, como se menciona en las otras respuestas, haría eso.

Además, eso no cambia la configuración branch.hello.fetch: todavía hace referencia a origen/hello, por lo que la próxima recuperación volverá a crear la rama de seguimiento remoto en su repositorio local.

Cuestiones relacionadas