Aplastando las confirmaciones de Git

Uso Git todos los días y escribí unGuía de Gity unHoja de trucos de Giten el pasado.

Me considero un fan de Git, pero… no soy un experto en Git.

Confirmar, buscar origen, extraer origen, empujar al origen ... ese es mi día a día usando Git.

Y lo hagoalgunosGit:

Las cosas avanzadas que puede hacer Git me dejan boquiabierto. Puede ser muy complejo y tiendo a evitar toda esa complejidad. Casi nunca uso Git en la línea de comando, y usoEscritorio de GitHubque es el cliente Git más simple y agradable de todos los tiempos.

Dos cosas que hago, sin embargo, a veces soncosecha de la cerezayaplastando confirmaciones.

Hablemos de eso.

En proyectos en los que soy el único desarrollador, lo que significa todos mis proyectos personales, tiendo a trabajar en máster cuando puedo. Por ejemplo, si estoy haciendo un cambio simple o agregando una nueva publicación al blog. Cosas rápidas e inquebrantables.

En algunos casos, sin embargo, no utilizo este enfoque y, en su lugar, creo una rama para una función grande.

Este también es el valor predeterminado cuando se trabaja en un proyecto de código abierto o basado en equipo.

Creas una rama y te comprometes a menudo. Comprometerse temprano y con frecuencia es una gran ventaja porque puede trabajar en su código con la confianza de que siempre puede volver a un estado de trabajo, o al menos a un estado en el que sabe que algo funcionó.

Puede hacer una serie de confirmaciones rápidas en las que el mensaje sea "ok", "probando esto" o "corregir un error tonto".

Pero en algún momento debe converger a un estado estable y volver a enviar los cambios al maestro oa cualquier rama que desee.

Quieres hacer una cosa antes de eso: aplastar tus confirmaciones.

GitHubpuede hacer eso por usted automáticamente cuando está fusionando una solicitud de extracción, y es un flujo de trabajo que he estado usando mucho en repositorios públicos de código abierto en el pasado.

En lugar de ver todas las confirmaciones individuales contenidas en una solicitud de extracción, solo verá una confirmación, y en el proceso de fusión de relaciones públicas puede escribir un mensaje y una descripción de confirmación detallados y dedicados.

Esto eliminará todas las confirmaciones de Git anteriores que divergen del encabezado de la rama a la que se está fusionando, y también eliminará todas aquellas confirmaciones en las que tal vez haya revertido los cambios, y así sucesivamente.

Esto es aplastante en el proceso de relaciones públicas de GitHub. También puedes aplastar tus confirmaciones fuera de GitHub.

Una vez que haya terminado su trabajo en una rama, fusiona master (o cualquier otra rama en la que desee fusionar) en ella:

git merge master

para que pueda manejar cualquier conflicto de actualización allí.

Luego realizas el pago con el maestro, y desde allí ejecutas:

git merge --squash <your-feature-branch>

y luego

git commit

Este es solo uno de los posibles flujos de trabajo que puede usar, y hacer todo usando GitHub es muy simple y la opción que puede causarle la menor cantidad de dolores de cabeza.


Más tutoriales de git: