remote remota rama origin example crear clonar cambiar git branch remote-branch

origin - ¿Cómo se elimina una referencia de rama remota no válida de Git?



git push origin master (11)

En mi caso, estaba tratando de eliminar las entradas que se guardaron en .git/packed-refs . Puede editar este archivo de texto sin formato y eliminar las entradas que git br -D no sabe cómo tocar (al menos en la versión 1.7.9.5).

Encontré esta solución aquí: https://stackoverflow.com/a/11050880/1695680

En mi repositorio actual tengo la siguiente salida:

$ git branch -a * master remotes/origin/master remotes/public/master

Quiero eliminar remotes/public/master de la lista de sucursales:

$ git branch -d remotes/public/master error: branch ''remotes/public/master'' not found.

Además, la salida de git remote es extraña, ya que no incluye public :

$ git remote show origin

¿Cómo puedo eliminar ''remotes / public / master'' de la lista de sucursales?

Actualización, probé el comando git push :

$ git push public :master fatal: ''public'' does not appear to be a git repository fatal: The remote end hung up unexpectedly


La respuesta aceptada no funcionó para mí cuando el árbitro estaba lleno. Esto hace sin embargo:

$ git remote add public http://anything.com/bogus.git $ git remote rm public


No sabía sobre git branch -rd , por lo que la forma en que resolví problemas como este es tratar mi repo como un repositorio remoto y hacer una eliminación remota. git push . :refs/remotes/public/master git push . :refs/remotes/public/master . Si las otras formas no funcionan y usted tiene alguna referencia extraña de la que quiere deshacerse, esta manera es segura. Le brinda la precisión exacta para eliminar (o crear) cualquier tipo de referencia.


Solo un poco relacionado, pero aún podría ser útil en la misma situación que tuvimos: usamos un recurso compartido de archivos de red para nuestro repositorio remoto. La semana pasada las cosas funcionaron, esta semana recibimos el error "El origen remoto no anunciaba la Ref. Para referencias de sucursales / jefes / maestros. Esta Referencia puede no existir en el control remoto o puede estar oculta por la configuración de permisos"

Pero creíamos que no se había hecho nada para corromper las cosas. El NFS hace instantáneas, así que revisé cada "versión anterior" y vi que hace tres días, el tamaño en MB del repositorio había pasado de 282 MB a 33 MB, y ahora existían aproximadamente 1.403 archivos nuevos y 300 carpetas. Pregunté a mis compañeros de trabajo y uno había tratado de presionar ese día, luego lo cancelé.

Utilicé la funcionalidad "Restaurar" para restaurarlo justo antes de esa fecha y ahora todo funciona bien de nuevo. Probé la poda anteriormente, no parecía ayudar. Tal vez las limpiezas más duras hubieran funcionado.

Espero que esto pueda ayudar a alguien más algún día!

Arrendajo


Todo lo que necesitas hacer es

$ git branch -rd origin/whatever

Es así de simple. No hay razón para llamar a un gc aquí.


Todo lo que necesitas hacer es

git fetch -p

Se eliminarán todas las sucursales locales que se eliminan de forma remota.

Si estás en git 1.8.5+ puedes configurarlo automáticamente

git config fetch.prune true

o

git config --global fetch.prune true


Tuve un problema similar. Ninguna de las respuestas ayudó. En mi caso tuve dos repositorios remotos eliminados que aparecen de forma permanente.

Mi última idea fue eliminar todas las referencias a él a mano.

Digamos que el repositorio se llama "Repo". Yo si:

find .git -name Repo

y borró los archivos y directorios correspondientes.

grep Repo -r .git

Esto encontró algunos archivos de texto en los que quité las líneas correspondientes. Ahora, todo parece estar bien.

Normalmente deberías dejar este trabajo a git.


Usted podría estar necesitando una limpieza

git gc --prune=now

o podrías estar necesitando una ciruela

git remote prune public

ciruela pasa

Borra todas las ramas de seguimiento obsoletas en <nombre>. Estas ramas obsoletas ya se han eliminado del repositorio remoto al que hace referencia <name>, pero aún están disponibles localmente en "remotes / <name>".

Con la opción --dry-run, informe qué ramas se podarán, pero no las pode realmente.

Sin embargo, parece que estos deberían haberse limpiado antes con

git remote rm public

rm

Quite el control remoto llamado <nombre>. Se eliminan todas las ramas de seguimiento remoto y los ajustes de configuración del control remoto.

Por lo tanto, es posible que haya editado manualmente el archivo de configuración y esto no haya ocurrido o que tenga problemas de privilegios.

Tal vez ejecute eso de nuevo y vea qué pasa.

Contexto de asesoramiento

Si echa un vistazo a los registros de revisión , notará que sugerí más técnicas "correctas", que por alguna razón no querían trabajar en su repositorio.

Sospeché que el OP había hecho algo que dejó a su árbol en un estado inconsistente que causó que se comportara un poco de manera extraña, y se requirió que git gc arreglara el trasero detrás del cruft.

Por lo general, git branch -rd origin/badbranch es suficiente para enturbiar una sucursal de seguimiento local, o git push origin :badbranch para git push origin :badbranch una sucursal remota, y por lo general , nunca necesitará llamar a git gc


git gc --prune=now no es lo que quieres.

git remote prune public

o git remote prune origin # si esa es la fuente remota

es lo que quieres



git push public :master

Esto eliminaría la rama remota llamada master como Kent Fredric ha señalado.

Para listar las ramas de seguimiento remoto:

git branch -r

Para eliminar una rama de seguimiento remoto:

git branch -rd public/master