Suponga que está creando un proyecto utilizando Git como control de versión. Lanzaste la versión 1 después de eso, querías agregar nuevas funciones para la versión 2 e incluso arreglaste algunos errores encontrados en la versión 1. Tenías muchas confirmaciones acumuladas después de tu primera versión. ¿Hay alguna manera de fusionar todas las confirmaciones después del primer lanzamiento en una sola confirmación? SÍ, es posible usando calabaza.
Squash es una de las funciones útiles y potentes disponibles en el modo interactivo del comando git rebase.
Ahora tenemos un repositorio llamado GFG_VIDEO, que es una herramienta de videoconferencia de código abierto. GFG_VIDEO ha lanzado la primera versión de su herramienta con funciones básicas como videollamadas entre pares y mensajes con la etiqueta R_V1 (de color verde). Después de que el equipo de lanzamiento de R_V1, GFG_VIDEO comenzó a agregar nuevas funciones, como la creación de grupos, las videollamadas grupales y la corrección de errores menores de R_V1, como caídas de llamadas, etc. Ahora GFG_VIDEO está listo para su nuevo lanzamiento R_V2. Si observa, tenemos 3 confirmaciones desde nuestra confirmación inicial a R_V1 (primera versión). Después de nuestro R_V1, tenemos 3 confirmaciones para nuestro R_V2 (segunda versión). Parece un poco desordenado y difícil de seguir. Aquí podemos usar el concepto Squash y fusionar todas las confirmaciones después de R_V1 hasta R_V2 en una sola confirmación, lo que hace que nuestro registro de repositorio sea más ordenado y fácil de seguir.
Implementación: Centrándose en el comando squash.
La imagen de arriba muestra que tenemos 3 compromisos: compromiso inicial, compromiso 2, lanzamiento de la versión 1. Hemos lanzado con éxito la primera versión (R_V1) de la herramienta GFG_VIDEO. Después de que se agregan nuevas funciones de R_V1 y se corrigen errores menores de la versión anterior, la herramienta está lista para su segunda versión R_V2.
La imagen de arriba del registro GFG_VIDEO es posterior al lanzamiento de la segunda versión. Se puede observar que después del lanzamiento de la versión 1 (etiqueta: R_V1) hay 3 compromisos para el lanzamiento de la versión 2. Esto parece un poco desordenado, para que sea más fácil de leer podemos hacer una operación de squash.
Hagamos squash ahora
git rebase -i HEAD~3
rebase es una acción para reescribir confirmaciones y su historial -i es ingresar al modo interactivo de rebase HEAD~n estados para realizar nuestra operación en n confirmaciones de HEAD
Al ingresar el comando anterior, obtendremos un editor interactivo con todas nuestras confirmaciones seleccionadas, que es donde realizaremos el squash.
Podemos ver que hemos seleccionado 3 confirmaciones al comienzo del editor interactivo, debajo podemos ver la lista de comandos como elegir, reformular, editar, aplastar, etc.
Tarea: para aplastar la segunda y la tercera confirmación con la primera confirmación, por lo que cambiaremos la primera palabra de elegir a aplastar.
whichever commits we want to squash we have to change it to squash from pick
Después de cambiar las confirmaciones de selección a squash, guarde el archivo y ciérrelo. Inmediatamente se abrirá otro editor donde debemos ingresar el último mensaje de confirmación.
Ingrese el último mensaje de confirmación y comente los mensajes antiguos restantes.
Después de agregar el último mensaje de confirmación, guarde el archivo y salga del archivo. Ahora muestra que el rebase es exitoso.
Ahora, si vemos nuestro registro GFG_VIDEO, podemos observar que nuestras 3 confirmaciones después del lanzamiento de la versión 1 se agrupan en 1 confirmación.
Publicación traducida automáticamente
Artículo escrito por sunilsaikumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA