Pregunta Eliminación de la rama Git


En Git, ¿qué significa "eliminación" de una rama?

¿Se habrá ido del repositorio? O todavía será navegable a través de git branch?

Lo que realmente quiero hacer es marcar una rama como "callejón sin salida", es decir, la rama está tan lejos de ser maestra, que nadie debería usarla como punto de partida, aunque hubo algunas buenas ideas en esa rama, así que me gusta guardarlo, como referencia.


76
2018-02-26 15:52


origen


Respuestas:


Puede eliminar la rama, pero primero etiquetarla para que su historial no desaparezca. De esta manera, la sucursal no aparece en la lista de sucursales, lo que debería evitar que las personas trabajen en ella, pero el trabajo no se borrará permanentemente (incluso después de que se ejecute la recolección de basura). Por ejemplo, cada vez que tengo una rama que se ha vuelto irrelevante, pero no estoy preparado para eliminarla permanentemente, la etiqueto como "archive / <nombre de la sucursal> ".

Mientras tanto master o alguna otra rama:

git tag archive/foo foo
git branch -D foo

Esto crea una etiqueta llamada archive/foo desde el foo rama antes de borrar foo. También puede agregar un mensaje a la etiqueta, que explica qué hay en la rama, por qué existió, por qué ahora es un callejón sin salida, etc.

git tag -m 'Foo is deprecated in favor of bar' archive/foo foo

La capacidad de registrar por qué una rama se está depreciando es quizás una ventaja de etiquetar en lugar de mover ramas a un espacio de nombres alternativo.

Si alguna vez necesita resucitar una sucursal que ha sido archivada de esta manera, es tan simple como:

git branch foo archive/foo
git tag -d archive/foo       # Optional

Ahora la rama está de vuelta como si nunca hubiera sido eliminada.


152
2018-02-26 18:06



Las ramas de Git se almacenan como referencias a una revisión. Si elimina la rama, se elimina la referencia; si nada más hace referencia a esa revisión, eventualmente será basura recolectada. Además, si elimina la rama, se habrá ido (de su repositorio). Si desea marcar una rama como obsoleta pero mantenerla para su uso posterior, puede mover la rama a un subdirectorio:

$ git branch
* master
  testing_feature_one
  testing_feature_two
$ git branch -m testing_feature_one deprecated/testing_feature_one
$ git branch
  deprecated/testing_feature_one
* master
  testing_feature_two

Alternativamente, podría crear un repositorio separado para las ramas en desuso, pasarlas y luego eliminarlas del original. En cualquier caso, afectará a cualquier usuario que esté siguiendo las sucursales: el contenido de su repositorio no cambiará (ni ninguno de los nombres de sus sucursales), pero si intentan volver a utilizarlo, lo harán. tiene que cambiar su objetivo en su configuración.


2
2018-02-26 16:15



git branch -D <branchName> borrará su rama del repositorio. No podrás verlo ni navegar más. Además, perderá todos los cambios de archivos realizados en esa rama.

https://git-scm.com/docs/git-branch


2
2018-02-26 15:55



No será navegable a través de la rama git y hasta que se realice la recolección de basura, no se perderá del repositorio.

Si desea marcar la rama en cuestión como un callejón sin salida, simplemente hágalo (¡puede que no lo haga por usted pero puede hacerlo!).

Etiquetarlo (de la forma que prefiera) como referencia histórica funciona.


0
2018-02-26 16:29