Esta es probablemente una pregunta tonta, pero soy nuevo en git y veo una rama remota que ya no existe.
$ git branch -a
* master
remotes/origin/master
remotes/origin/production
No creo que la rama de producción exista remotamente y no puedo entender por qué todavía se muestra localmente. ¿Cómo puedo eliminar / eliminar esta rama? Así es como se ve un intento de eliminarlo:
$ git push origin :production
error: unable to push to unqualified destination: production
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 'git@IP:puppet.git'
Puedo pagar la rama de producción supuestamente remota, pero obtengo esto:
$ git checkout origin/production
Note: checking out 'origin/production'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at c323996... added powerdns module, no really
No tengo idea de qué diablos estoy haciendo. Cualquier ayuda sería apreciada.
git branch -a
después de ungit fetch
?Respuestas:
Tu tienes que hacer:
fuente
Entonces hay dos problemas. En ambos casos, recuerde que Git se distribuye.
Primero. Cuando haces cosas como
la operación se realiza en su repositorio local, NO en la computadora remota. En otras palabras, su repositorio local informa todas las sucursales que conoce. Estas podrían ser ramas locales (como 'maestro') o ramas remotas que ha obtenido de un control remoto. Desde la última búsqueda, la rama de 'producción' del repositorio remoto ha cambiado, pero su repositorio local no lo sabe. La respuesta de manojlds es correcta. correr
para quitar ramas rancias.
El comando 'git push origin: production' se usa para eliminar la rama del repositorio git de la computadora remota. No es tu repositorio local. En este caso, otra persona ya ha eliminado la rama en el repositorio git de la computadora remota, por lo que verá este mensaje de error.
Aquí hay un enlace que resume estos comandos.
El segundo problema trata con el pago.
Al retirar una sucursal, desea hacerlo desde una sucursal local , no desde la sucursal remota. Es por eso que obtiene el error sobre un HEAD separado. El repositorio de git-notes tiene una buena explicación del problema con detalles sangrientos. Básicamente la frase clave es
Ahora, ¿cómo verificar una sucursal local, que es lo mismo que la sucursal remota?
Fácil, crea una sucursal local, en el momento de finalizar la sucursal remota.
fuente
es correcto, solo agregando que puede usar la
--dry-run
opción, que informa qué ramas se podarán de su repositorio local, pero en realidad no las podafuente