Hace unos días empecé a trabajar en un repositorio de Git nuevo y bueno, lo típico que al principio te pones y cometes muchos fallos por diversos motivos. Total que acabé con 36 commits para unos miseros stacks de CloudFormation. Entonces, empecé a jugar con el rebase pero la verdad sea dicha, la brujería del rebase aún no la domino y dado que no había nadie trabajando, solo yo, y era seguro hacer algo drástico busqué como eliminar el histórico de commits y dejarlo más presentable. Si te encuentras en una situación similar, donde necesitas presentar un historial más pulido antes de colaborar o simplemente quieres un nuevo comienzo en tu rama master local (¡y estás seguro de que nadie más depende de su historial!), aquí te explico cómo eliminar todos los commits de la rama master en Git.
# antes
git log --oneline |wc -l
16
# después
git log --oneline |wc -l
1
Borrar todos los commits de la rama master
Crear una nueva rama con la opción –orphan (Create a branch in a git init
-like state)
git checkout --orphan temp_branch
Añadimos todos los ficheros
git add -A
git commit -am "The first commit"
Borramos la vieja rama master
git branch -D master
Renombramos la actual rama en la que hemos hecho checkout a master
git branch -m master
Pusheamos a master con force
git push -f origin master
Consideraciones Importantes Antes de Borrar el Historial
- Repositorios Compartidos: Nunca hagas un force push a una rama master compartida por varios desarrolladores. Esto puede reescribir su historial local y remoto, causando conflictos y pérdida de trabajo significativa.
- Alternativas: Antes de eliminar todo el historial, considera si otras opciones como
git rebase -i
(rebase interactivo) ogit reset --soft/--mixed/--hard
podrían lograr un resultado similar sin la naturaleza destructiva de esta técnica. El rebase interactivo te permite editar, combinar o eliminar commits específicos. - Backup: Si no estás seguro, considera crear una copia de seguridad de tu repositorio local antes de realizar cualquier acción drástica.
Cuándo Podría Ser Aceptable Borrar el Historial de la Rama Master
- Repositorios Locales en Desarrollo Temprano: Si estás trabajando solo en un repositorio local y aún no lo has compartido con nadie más, y has cometido muchos errores iniciales, borrar el historial puede ser una forma rápida de empezar de nuevo con un historial limpio.
- Repositorios Recién Creados: Si has creado un nuevo repositorio y te das cuenta de que los primeros commits son innecesarios o desordenados antes de que alguien más comience a trabajar en él.