trucos tag sirven remota ramas rama que para name las hace commits commands comentarios cambiar git version-control branch git-branch git-remote

tag - poda remota git-no mostrĂ³ tantas ramas podadas como esperaba



para que sirven las ramas git (1)

Cuando utilizas el git push origin :staleStuff , elimina automáticamente origin/staleStuff , por lo que cuando origin/staleStuff git remote prune origin origin/staleStuff , has eliminado alguna rama que otro eliminó. Es más probable que sus compañeros de trabajo ahora necesiten ejecutar git prune para deshacerse de las ramas que ha eliminado.

Entonces, ¿qué hace exactamente git remote prune ? Idea principal: las ramas locales (no rastrear ramas) no son tocadas por git remote prune comando git remote prune y deben eliminarse manualmente.

Ahora, un ejemplo del mundo real para una mejor comprensión:

Tiene un repositorio remoto con 2 ramas: master y feature . Supongamos que está trabajando en ambas ramas, por lo que tiene estas referencias en su repositorio local (nombres de referencia completos para evitar confusiones):

  • refs/heads/master (nombre corto master )
  • refs/heads/feature ( feature nombre corto)
  • refs/remotes/origin/master (nombre corto origin/master )
  • refs/remotes/origin/feature (nombre corto origin/feature )

Ahora, un escenario típico:

  1. Algún otro desarrollador finaliza todo el trabajo en la feature , la fusiona en master y elimina la rama de feature del repositorio remoto.
  2. Por defecto, cuando haces git fetch (o git pull ), no se eliminan las referencias de tu repositorio local, por lo que aún tienes esas 4 referencias.
  3. Decide limpiarlos y ejecutar git remote prune origin .
  4. git detecta que la rama de feature ya no existe, por lo que refs/remotes/origin/feature es una rama obsoleta que debe eliminarse.
  5. Ahora tiene 3 referencias, incluyendo refs/heads/feature , porque git remote prune no elimina ninguna refs/heads/* .

Es posible identificar ramas locales, asociadas con las ramas de seguimiento remoto, por el parámetro de configuración branch.<branch_name>.merge . Este parámetro no es realmente necesario para que funcione nada (probablemente, excepto git pull ), por lo que podría faltar.

(actualizado con ejemplos e información útil de los comentarios)

Desde la página man:

Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>".

Así que eliminé un montón de ramas usando

git push origin :staleStuff

y luego corrió

git remote prune origin

Sin embargo, solo una sola rama local fue podada. Algunas de estas ramas fueron creadas por mí, algunas por compañeros de trabajo. ¿Esto indica que no estaba rastreando esas ramas correctamente en primer lugar?