Cuando uso el autocompletado de bash en Git, sigue mostrándome ramas de viejos controles remotos que ya no tengo. Cuando hago un git branch -la
, muestra esos viejos controles remotos y ramas, mientras que un git branch -l
no lo hace. A ls .git/refs/remotes/
también los muestra. Sin embargo, no están presentes en mi .git / config y tampoco se muestran cuando ejecuto git remote show
.
Entonces, ¿cómo me deshago de ellos porque mi lista de autocompletar es demasiado larga en este momento?
Ya probé:
git reflog expire --expire=now --all
git gc --prune=now
rm .git/refs/remotes/theoldremote
git remote prune theoldremote
También soy consciente del hecho de que puedo volver a clonar el repositorio, pero eso es solo una trampa ;-)
git remote rm
ahora (git 2.0.1, junio de 2014) elimine primero las ramas de seguimiento remoto. Eso debería ayudar a evitar limpiar ramas viejas. Vea mi respuesta a continuaciónRespuestas:
Git no elimina las ramas de seguimiento remoto (local) automáticamente si la rama se eliminó en el repositorio remoto. Además, antes de la V2.0.1, las ramas de seguimiento remoto en algunos casos no se eliminaban cuando eliminaba el control remoto de su configuración de git (consulte la respuesta de VonC).
Para eliminar ramas obsoletas de seguimiento remoto (ramas que se eliminaron en el repositorio remoto) para uno de sus repositorios remotos, ejecute
Para citar la página del manual o
git remote
:Sin embargo, a partir de su pregunta, parece que lo eliminó manualmente
.git/refs/remotes/theoldremote
, por lo que Git ya no sabe sobre el repositorio remoto al que pertenecían las ramas de seguimiento remoto. No es así como se supone que debes hacerlo.La forma normal de eliminar un repositorio remoto es ejecutar
Esto eliminará el control remoto de su
.git/config
y eliminará las ramas de seguimiento remoto.Si simplemente elimina el directorio debajo
.git/refs/remotes/
, las ramas permanecerán atrás. Luego, deberá eliminarlos manualmente:Necesita la opción
-r
de eliminar una rama remota.fuente
fatal: 'kolichikov' does not appear to be a git repository
.git gc
, lo que llama a git prune ". Sin embargo, tenga en cuenta quegit gc
no es compatible con--dry-run
.git branch -rd <remote>/<branchname>
era lo que estaba buscando. ¡Gracias!yo suelo
para eliminar una rama del servidor.
para eliminar referencias remotas que ya no existen en el servidor
fuente
fatal: 'kolichikov' does not appear to be a git repository
Nota: si bien git remote prune es la respuesta, sepa que, a partir de git 2.0.1 (25 de junio de 2014),
git remote rm
comienza eliminando las ramas de seguimiento remoto .Entonces, con suerte, uno no debería tener que limpiar ramas viejas después de un
git remote rm
.Ver la confirmación b07bdd3 de Jens Lindström (
jensl
)remote rm
: eliminar la configuración remota como la últimaPero si es necesario, un simple
git fetch
puede ser suficiente, siempre que haya configurado primero:fuente
No empuje nada a una rama para eliminarlo:
git push remote :remote_branch
Está en algún lugar de la documentación, pero no es realmente obvio.
¿O entendí mal tu pregunta?
fuente
git
Ok, lo tengo. El problema era que los controles remotos ya no existen, pero sí en algún lugar de la base de datos de git. Volví a agregar los controles remotos, luego lo hice
Después de eso, desaparecen de la lista. De alguna manera no los eliminé correctamente antes, supongo.
fuente
Me estaba confundiendo cuando las ramas remotas que se habían eliminado en el lado del servidor todavía aparecían cuando ejecuté:
El siguiente comando solucionó esto para mí (en la versión 2.25.0 de git):
fuente