2012-01-06 27 views
14

tengo 2 sucursales remotas:Cómo eliminar por la fuerza una rama remota en GitHub?

- pending-issues-in-project 
- new-issues-in-project 

he tratado de eliminar pending-issues-in-project así:
git push origin :pending-issues-in-project, pero tengo el error:

error: unable to push to unqualified destination: pending-issues-in-project 
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]:forkedRepo/RepoName.git' 

así que pensé Puede ser que he borrado pending-issues-in-project rama , pero cuando ejecuto
git branch -a muestra pending-issues-in-project rama en la lista.
Cuando probé lo mismo (intenté eliminar) para new-issues-in-project, funcionó.
Ya he eliminado ambas ramas del servidor local usando git branch -D branchName.

Si el error viene debido a que la rama no existe en el repositorio, por lo que su viene en la lista de la rama remota?
y
¿Hay alguna forma de borrar por la fuerza la rama remota?

Gracias por su tiempo.

+0

¿Qué le proporciona 'git branch -r'? –

+0

dando la lista de sucursales que también tiene origin/pending-issues-in-project, que estoy tratando de eliminar. –

Respuesta

19

que tiene que hacer:

git remote prune origin 

para eliminar esa rama seguimiento remoto en su repositorio Git local (ciruela elimina cualquier rama que no existe en el origen remoto ya no). Después de eso, no lo verá debajo de git branch -a

7

La rama que está viendo es lo que se denomina una rama remota de [seguimiento]. Está en su repositorio local, y representa el último lugar donde vio esa rama en el repositorio remoto. Git usa ramas como esta para que no tenga que hablar con el repositorio remoto cada vez que quiera tratar con él; simplemente actualiza/busca una vez, la rama de almacenamiento remoto se actualiza y puede trabajar desde allí. En su caso, la sucursal en el repositorio remoto se eliminó hace mucho tiempo; solo necesita eliminar la copia en su repositorio local.

Hay dos formas principales para eliminarlo:

  • git branch -d -r origin/pending-issues-in-project saca sólo esa rama; y
  • git remote prune origin elimina todas las ramas remotas obsoletas. También puede actualizar al mismo tiempo: git remote update --prune origin
0

perdone mi inglés torpe. Espero que puedas entender mi respuesta.

  1. es probable que el comando git push origin :pending-issues-in-project sea incorrecto. Quizás quisiste decir: git push origin pending-issues-in-project. Empuja una rama hacia el github.

  2. Si el error se produce porque la rama no existe en el repositorio, ¿por qué viene en la lista de sucursales remotas? Como git es un sistema de control de versiones distribuidas, el servidor de github tiene una base de datos para almacenar el archivo .git y los datos que le envías.Por lo tanto, si usas el comando: git branch -de branchName, simplemente elimina la rama local y no interfiere el archivo .git de github y los datos que has enviado.

  3. ¿Hay alguna forma de borrar por la fuerza la rama remota? sí, es posible. el comando es:

    git push origin --delete <branchName> 
    
  4. Si usted quiere saber más sobre la función de distribuir el sistema de control de versiones Git, es posible encontrar este enlace útil: git's distributed feature.

    Y si quieres saber más acerca de cómo eliminar una rama en github por git, puedes leer sobre ella here.

+0

¿Qué estás preguntando exactamente? Lo siento pero estoy teniendo dificultades para comprenderlo, incluso después de haber editado tu publicación. – Quillion

Cuestiones relacionadas