General

Ramas huérfanas en Git

Photo by Anas Alshanti

Suponiendo que tenemos nuestra web/app en producción en la rama master, y queremos trabajar en una versión completamente nueva para reemplazar la versión de producción. Para esto vamos a necesitar crear una rama "huérfana", es decir, que no siga el historial de la actual master, ya que sería imposible para Git crear un pull requests para mergearlas.

Creamos una nueva rama huérfana llamada v2, donde vamos a desarrollar la nueva versión.

git checkout --orphan v2

Limpiamos el directorio de trabajo actual de git

git rm -rf .

Es posible que ya va a ser una versión completamente nueva, nuestro archivo .gitignore ya no sea válido, así que vamos a eliminarlo

rm .gitignore

Luego vamos a trabajar normalmente, commiteando y pusheando a nuestro remoto, en esta nueva rama v2.

Finalmente, cuando llegue el momento de reemplazar nuestra master (la versión vieja o v1) por la nueva versión v2, deberemos hacer lo siguiente:

Cambiamos a la rama nueva

git checkout v2

Mergeamos con master utilizando la estrategia ours de Git

This resolves any number of heads, but the resulting tree of the merge is always that of the current branch head, effectively ignoring all changes from all other branches. It is meant to be used to supersede old development history of side branches

git merge --allow-unrelated-histories -s ours master

(-s ours is short for --strategy=ours)

Cambiamos a la rama master

git checkout master

Mergeamos

git merge v2

Fuentes: