2010-05-24 13 views
29
$ git branch -a 
* SocialAct 
    master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/SocialAct 
    remotes/origin/social 

Quiero borrar la rama remota "mandos a distancia/origen/social", y se aplica comando folloing:No se puede eliminar una rama remota creado involuntariamente

$ git branch -d -r origin/social 
Deleted remote branch origin/social (was 26f6f61). 

Pero no tengo idea de cómo llevar estos cambios de forma remota para que las ramas se eliminen del origen y todos puedan ver los cambios. Probé git push pero eso no funciona

Cualquier ayuda.

Respuesta

-3

La eliminación de ramas remotas se describe detalladamente en here.

7

git push origin :social
Pero también debe eliminar localmente, antes o después.

+1

Gracias. De hecho, noté esta solución y lo intenté antes. Pero esto da el siguiente error ... $ git push origin: cabezas/socail Introducir frase de contraseña para la clave '/h/.ssh/id_rsa': de error: No se puede empujar a destino sin salvedades: cabezas/socail El destino refspec ni coincide con un ref existente en el control remoto ni comienza con refs /, y no podemos adivinar un prefijo basado en la referencia de origen. de error: no pudo empujar algunas referencias a '[email protected]' – Himel

+0

He borrados localmente en primer lugar, con el comando: $ git branch -d -r origen/sociales o, lo hice mal? – Himel

+0

No importa que elimines localmente o no, ¿notaste que tu último ejemplo tiene un error social/social? –

45

tuve este error (desde arriba):

Thanks. Actually I noticed this solution and tried earlier. But this gives following error... $ git push origin :heads/socail Enter passphrase for key '/h/.ssh/id_rsa': error: unable to push to unqualified destination: heads/socail The destination refspec neither matches an existing ref on the remote nor begins with refs/, and we are unable to guess a prefix based on the source ref. error: failed to push some refs to '[email protected]' – Himel May 24 '10 at 9:37

Parecía haber conseguido confundido acerca de si es o no realmente me había borrado de forma remota. Trabajé alrededor de eso así:

git push origin HEAD:branch_to_delete 

git push origin :branch_to_delete 

Eso funcionó para mí. Usando: git versión 1.7.3.1.msysgit.0.

+44

Parece que la rama ya se eliminó. git pull no eliminará las ramas eliminadas de forma remota, debe usar podar: git remote prune origin - http://stay-calm.blogspot.com/2009/02/git-prune-to-remove-old-remote-tracking .html – Josh

+4

El comentario anterior debería ser la respuesta mejor calificada aquí. Por supuesto, el método de Nathan funciona, pero esconde el verdadero error aquí. – fforw

7

Según lo mencionado por @Josh en un comentario en Nathan McDaniel's Answer, es probable que esto se deba a que la rama ya no existe en el repositorio remoto. Esto ocasiona que git branch -a muestre todavía la rama bajo origin (o lo que sea que haya llamado este control remoto en particular), pero borrar la rama en el repositorio remoto es imposible porque ya no existe en el control remoto. Esto podría haber sido causado al eliminar la rama en el control remoto de otra computadora (además de que git pull y git fetch no eliminan las referencias a las sucursales remotas que se han eliminado del repositorio remoto).

El arreglo

Simplemente quite todas las ramas de seguimiento remoto que ya han sido retirados del repositorio remoto con git remote prune:

git remote prune REMOTENAME 

Por ejemplo, si el nombre de su mando a distancia es origin (probable), la comando anterior se vería así:

git remote prune origin 

de la documentación proporcionada con git:

git remote prune [-n | --dry-run] <name>

Deletes all stale remote-tracking branches under <name> . These stale branches have already been removed from the remote repository referenced by <name> , but are still locally available in "remotes/".

With --dry-run option, report what branches will be pruned, but do not actually prune them.

1

El comando a continuación eliminará la rama de seguimiento remoto, pero no a la rama que existe en el control remoto

$ git branch -d -r origin/social 
Deleted remote branch origin/social (was 26f6f61). 

Para eliminar rama remota:

git push origin :social 

Esto eliminará automáticamente el seguimiento remoto rama, es decir, controles remotos/origen/social.

Cuestiones relacionadas