En nuestro repositorio GitHub, un compañero de trabajo sacó una rama llamada release. Pero cuando ejecuto git checkout releaselocalmente, siempre obtengo la rama eliminada release. Igual, incluso cuando revisé otra rama, eliminé la releaserama con git branch -D releasey corrí nuevamente git checkout release.
¿Hay algo que arreglar en el repositorio de GitHub, o debo arreglar algo localmente?

git branch --remotesalida, después de corrergit fetch? Es posible que deba podargit fetch -ppara olvidar las ramas remotas eliminadas.git branch --remotesalidaorigin/release. ¿Quiere ejecutargit fetch -psin argumentos adicionales y eliminará todas las ramas remotas eliminadas?git fetch -psin argumentos adicionales se podarán todas las ramas remotas eliminadas.Respuestas:
Después de eliminar una rama en el lado remoto, aún puede ver esta rama remota anteriormente recuperada localmente, vea:
Solo eliminó el "lanzamiento" pero no el "control remoto / origen / lanzamiento". Eliminarlo así:
O elimine todas las ramas recuperadas que ya no existen en el lado remoto:
fuente
git branch -rd origin/release, ¿qué-rsignifica? ¿-dSignifica lo mismo que-D? Segit branch -rd origin/releasepuede reemplazar congit branch -d remotes/origin/release?List or delete (if used with -d) the remote-tracking branches.; -D:Shortcut for --delete --force.git branch -rd origin/releasepuede reemplazar congit branch -d remotes/origin/release?-rrefiere a ramas remotas , es necesario. Las ramas locales y remotas se almacenan en diferentes directorios, compararls -l .git/refs/headsyls -l .git/refs/remotes. También podría tener una rama local llamadaremotes/origin/releaseque se eliminaría sin-r. Esto puede sonar confuso, pero puedes jugar, crear ramas con nombres extraños y ver cómo se ve.git/.Cuando las ramas se eliminan de forma remota, debe podar su repositorio local; la forma más fácil de hacerlo es con
Esto actualizará su repositorio local con todos los cambios realizados en el repositorio remoto, pero sin actualizar ninguna de sus sucursales locales. Después de ejecutar esto,
ya no mostrará la rama remota eliminada.
Los repositorios de git están completos, ya sea en su propio sistema o en el servidor. Entonces, cuando clonas por primera vez un repositorio, obtienes una copia completa, y tu git local "sabe" acerca de todas las ramas remotas, así como tus ramas locales. Esta información no se sincroniza automáticamente, por lo que cuando su colega eliminó la
releaserama en el servidor, su repositorio git local no perdió su noción de unareleaserama remota . La sincronización con lasgit fetchactualizaciones de toda la información local en las sucursales remotas para que coincidan con el estado del servidor (estrictamente hablando, repositorio remoto, donde sea que esté), pero sin eliminar ninguna información local en las sucursales remotas. La poda congit fetch -p(ogit fetch --prune, ogit remote prune) elimina la información local en ramas remotas que se han eliminado.fuente
-p(--prune) obliga a eso.releaserama degit branch -D releaseantes degit checkout releasehacergit checkout releasedejar de recibir lareleaserama?git checkout releasevolverá a crear automáticamente una rama si hay una rama remota con ese nombre.git branch -D releaseya ha eliminado lareleaserama en mi repositorio local; Si es esto último, un compañero de trabajo ha eliminado lareleaserama en GitHub; Así que todavía no estoy seguro de por qué "volverá a crear automáticamente una rama si hay una rama remota con ese nombre".Tim: Git se distribuye VCS, por lo que cuando clonas un repositorio de remoto a tu local, clona todo (historial). Entonces, cuando clonaste tu repositorio, tenía una rama llamada lanzamiento. Desde que su colega eliminó la rama de lanzamiento de forma remota, hasta que haga una poda
git fetch -po elimine esa rama explícitamente, su local tendrá esa rama.fuente
Quizás un poco tangencial, pero la perspectiva de este sitio podría ayudar a comprender el tema general de la eliminación de ramas:
http://railsware.com/blog/2014/08/11/git-housekeeping-tutorial-clean-up-outdated-branches-in-local-and-remote-repositories/
Hay una superposición con algunos de los temas que ya se han discutido aquí, pero el enfoque está en la limpieza: eliminar sucursales, remotas y locales, que ya no son necesarias en un entorno colaborativo. En particular, el
git branch --mergedcomando identifica ramas que son seguras para eliminar debido a la fusión con su línea principal (o cualquier rama que le interese). Si está colaborando, algunos mini guiones más elegantes como este presentarán las cosas en un formato agradable y digerible con fechas y autores.(Lamentablemente, "agradable, digerible" no se aplica al formato de los propios scripts).
fuente