¿Cómo elimino los nombres de ramas eliminados del autocompletado?

120

Solía git branch -d myBrancheliminar una rama. Sin embargo, cuando estoy en el maestro e intento pagar una nueva rama con git checkout, myBranchtodavía aparece en la pestaña autocompletar.

¿Cómo elimino el nombre myBranchde la pestaña autocompletar para git checkout?

John Hoffman
fuente
10
¿ git branch -aTodavía enumera myBrancho origin/myBranch? Tenga en cuenta que, incluso si myBranchno existe, git checkout myBranchsigue siendo un atajo válido para git checkout -b myBranch origin/myBranchsi origin/myBranchexiste.
twalberg
2
@twalberg vale la pena publicarlo como respuesta.
cmbuckley

Respuestas:

81

Una posible razón para esto es que, si origin/myBranchtodavía existe una rama remota (por ejemplo ), git checkout myBranchtendrá éxito como alternativa a git checkout -b myBranch origin/myBranch. Esto está pensado como una conveniencia para el caso común de pagar una sucursal remota por primera vez, creando una sucursal de seguimiento local con el mismo nombre.

También hay otras posibilidades, dependiendo de lo que esté usando exactamente para completar, pero esa es una de las primeras cosas que comprobaría. Si ejecuta git branch -a, y hay uno en la origin/myBranchlista (o uno para un control remoto que no sea origin, si lo tiene), entonces es probable que sea el culpable.

Twalberg
fuente
2
¡Gracias! Ese parece ser el culpable. origin/myBranchtodavía existe. Si eliminé la myBranchrama en Github (a través de la interfaz en línea), ¿es seguro para mí llamar git branch -d origin/myBranchpara eliminar esa rama remota?
John Hoffman
99
@JohnHoffman Eso debería ser seguro, pero creo que la mejor manera sería git fetch --prune origin. Eso limpiará todas las ramas de seguimiento locales que ya no existen en el control remoto.
twalberg
3
@twalberg No creo que simplemente eliminar la rama local y remota sea suficiente para deshacerse de todas las ramas antiguas en autocompletar. Creo que es necesario que git fetch --prune originlas referencias locales a las ramas remotas desaparezcan en el autocompletado. Sería bueno pasar eso del comentario a la respuesta. En cualquier caso gracias por tu respuesta ya que me ayudó!
timmyl
4
git branch -ame llevó por el camino correcto; mi compañero de trabajo sugirió git fetch --prune --allpodar todas las ramas muertas de todos los controles remotos, lo cual es útil cuando se trabaja con muchos desarrolladores con muchas bifurcaciones.
ericsoco
173

git fetch --prune --all

Publicar esto como su propia respuesta, ya que es una solución de una línea, pero si vota, asegúrese de votar por la respuesta de @ twalberg anterior.

la sugerencia de @ twalberg de git branch -allevarme por el camino correcto; mi compañero de trabajo sugirió git fetch --prune --allpodar todas las ramas muertas de todos los controles remotos, lo cual es útil cuando se trabaja con muchos desarrolladores con muchas bifurcaciones.

ericsoco
fuente
19
Si bien la respuesta aceptada da una buena explicación de por qué sucede esto, esta respuesta presenta una solución real al problema y, por lo tanto, debe aceptarse en mi humilde opinión.
Patrick Oscity
3
Los nombres de ramas muertas todavía se muestran en autocompletar.
Fitsyu