Qué hacer con la rama después de la fusión

341

Tenía dos ramas: mastery branch1. Me acaban de fusionar branch1de nuevo en mastery he terminado con esa rama. ¿Debo eliminarlo o dejarlo reposar? ¿Eliminarlo causará alguna pérdida de datos?

Alison
fuente
Ver también: ¿Cómo usar git merge --squash?
Martin Thoma

Respuestas:

410

Después de la fusión, es seguro eliminar la rama:

git branch -d branch1

Además, git te advertirá (y se negará a eliminar la rama) si cree que aún no la has fusionado por completo. Si elimina forzosamente una rama (con git branch -D) que aún no está completamente fusionada, debe hacer algunos trucos para recuperar las confirmaciones no fusionadas (ver más abajo).

Sin embargo, hay algunas razones para mantener una sucursal. Por ejemplo, si se trata de una rama de características, es posible que desee hacer correcciones de errores en esa característica aún dentro de esa rama.

Si también desea eliminar la rama en un host remoto, puede hacer lo siguiente:

git push origin :branch1

Esto eliminará forzosamente la rama en el control remoto (sin embargo, esto no afectará a los repositorios ya desprotegidos y no evitará que nadie con acceso push lo vuelva a presionar / crear).


git reflogmuestra las revisiones revisadas recientemente. Cualquier rama que haya revisado en el historial reciente del repositorio también aparecerá allí. Aparte de eso, git fsckserá la herramienta de elección en cualquier caso de commit-loss en git.

Jonas Schäfer
fuente
Si desea guardar la rama, puede crear una etiqueta antes de eliminarla. Si desea volver a ese punto, puede retirar esa etiqueta.
Joqus
3
@Joqus Prefiero sugerir mantenerlo como una rama en ese caso. Simplemente no lo publiques.
Jonas Schäfer
Por si acaso: si desea "fusionar completamente" la rama antes de eliminarla, simplemente presione esa rama después de la fusión, pero antes de eliminarla. Algo así comogit checkout master && git merge branch1 && git push origin branch1 && git branch -d branch1
avtomaton
25

Prefiero RENAME en lugar de BORRAR

Todas mis ramas se nombran en forma de

  • Fix/fix-<somedescription> o
  • Ftr/ftr-<somedescription> o
  • etc.

El uso de la torre como mi extremo frontal git, pulcramente organiza toda la Ftr/, Fix/, Test/etc en carpetas.
Una vez que he terminado con una rama, me cambio el nombre a Done/...-<description>.

De esa manera, todavía están allí (lo que puede ser útil para proporcionar el historial) y siempre puedo regresar sabiendo de qué se trataba (función, corrección, prueba, etc.)

Yohst
fuente
44
¿También cambias el nombre de las ramas remotas?
VitalyB
21
Parece redundante mantener estas ramas, y una locura cambiarles el nombre . ¿Me estoy perdiendo de algo? Siempre puedes recrear la rama. stackoverflow.com/questions/3640764/…
ksav
no tiene sentido mantener ramas después de que se fusionaron
rastaman
2
+1 para la idea de renombrar a Fix, Test y Done ... Mantener sucursales es cómo se les paga a los contratistas en mi empresa.
jpfreire 03 de
1

Si continúa y BORRA la rama después de fusionarla.
Solo cuide
todas las referencias de URL de hipervínculos de sus sucursales BORRADAS, serán ROTAS .

ahmednabil88
fuente