que - recuperar repositorio borrado github
Git dice que la referencia remota no existe cuando borro la rama remota (10)
- obtener la lista de sucursales remotas
git fetch # synchronize with the server
git branch --remote # list remote branches
- Debería obtener una lista de las ramas remotas:
origin/HEAD -> origin/master
origin/develop
origin/master
origin/deleteme
- ahora podemos eliminar la rama:
git push origin --delete deleteme
Corrí
git branch -a
* master
remotes/origin/test
remotes/origin/master
Quiero borrar mi rama remota
He intentado
git push origin --delete remotes/origin/test
tengo
error: no se puede eliminar ''remotes / origin / test'': la referencia remota no existe
¿Cómo es que no existe?
Hice una
git branch -a
, y la vi listada.
Yo me perdí algo ?
Dado que la rama remota es control remoto / origen / prueba, puede usar dos formas:
git branch --remotes | grep -v ''origin/master'' | sed "s/origin////" | xargs -i{foo} git push origin --delete {foo}
y
git push origin --delete test
El comando
git branch -a
muestra ramas remotas que existen
en su repositorio local
.
Esto puede sonar un poco confuso, pero para entenderlo, debe comprender que hay una diferencia entre una rama remota y una rama que existe en un repositorio remoto.
Las ramas remotas son ramas
locales
que se asignan a ramas del repositorio remoto.
Entonces, el conjunto de ramas remotas representa el estado del repositorio remoto.
La forma habitual de actualizar la lista de ramas remotas es usar
git fetch
.
Esto obtiene automáticamente una lista actualizada de ramas desde el control remoto y configura ramas remotas en el repositorio local, también recuperando cualquier objeto de confirmación que pueda faltar.
Sin embargo, de forma predeterminada,
git fetch
no elimina las ramas remotas que ya no tienen una rama equivalente en el control remoto.
Para hacer eso, necesita explícitamente
podar
la lista de ramas remotas:
git fetch --prune
Esto eliminará automáticamente las ramas remotas que ya no existen en el control remoto.
Después,
git branch -r
le mostrará una lista actualizada de ramas que realmente existen en el control remoto: y aquellas que puede eliminar usando
git push
.
Dicho esto, para usar
git push --delete
, debe especificar el nombre de la rama en el repositorio remoto;
No es el nombre de su sucursal remota.
Entonces, para eliminar la
test
bifurcación (representada por su
origin/test
bifurcación remota), usaría
git push origin --delete test
.
El significado de
remotes/origin/test
es que tiene una rama llamada
test
en el
origin
servidor remoto.
Entonces el comando sería
git push origin --delete test
Hay un acceso directo para eliminar la rama en el origen:
git push origin :<branch_name>
Lo que es lo mismo que hacer
git push origin --delete <branch_name>
Para mí esto funcionó $ ▶ git branch -D -r origin / mybranch
Detalles
$ ▶ git branch -a | grep mandos a distancia mybranch / origen / mybranch
$ ▶ git branch -r | grep origen mybranch / mybranch
$ ▶ git branch desarrollo * característica / pre-implementación
$ ▶ git push origin --Eliminar error de mybranch: no se puede eliminar ''mybranch'': error de referencia remota no existe: error al insertar algunas referencias a ''[email protected]: config / myrepo.git''
$ ▶ git branch -D -r origin / mybranch Se eliminó el origen de sucursal remota / mybranch (era 62c7421).
$ ▶ git branch -a | grep mybranch
$ ▶ git branch -r | grep mybranch
Una guía práctica para eliminar ramas del origen que no sean ''maestro'':
git branch -D -r origin/test
¡Asegúrese de comprender las implicaciones de ejecutar esto antes de hacerlo!
git branch -a
enumerará las ramas en su local y no las ramas en su control remoto.
Y el error de
error: unable to delete ''remotes/origin/test'': remote ref does not exist
significa que no tiene una rama con ese nombre en su control remoto, pero la rama existe en su local.
git push origin --delete yourBranch
git push origin --delete origin/test
debería funcionar también