Git: aplasta varios compromisos en un solo compromiso

    Una de las cosas buenas de Git es su flexibilidad, que le permite realizar casi cualquier tarea en un 谩rbol de c贸digo fuente que necesite. En este caso, me refiero a limpiar el historial de un 谩rbol de fuentes aplastando las confirmaciones.

    Cuando aplasta las confirmaciones, est谩 combinando 2 o m谩s confirmaciones en una 煤nica confirmaci贸n. Esto se puede hacer por muchas razones, una de las cuales es que el historial de la fuente debe limpiarse antes de compartirlo con su equipo o enviar una solicitud de extracci贸n a un proyecto de c贸digo abierto. Por ejemplo, digamos que su historial de confirmaciones reciente se parece a esto:

    $ git log --oneline
    b7c864c Seriously, #421 is fixed now
    7729f48 Fixed typo
    cc4f2b5 Didn't work, trying something else
    b1339db Fixed issue #421
    c9f9e96 Updated docs for feature ABC
    4eeb10f Added feature ABC
    ...
    

    Como puede ver en los registros, el problema # 421 requiri贸 varios intentos para solucionarse. Aunque es genial que finalmente se haya encontrado la soluci贸n, esto no es exactamente algo que le gustar铆a compartir con el resto de su equipo. Lo 煤nico que realmente les importa es la soluci贸n final al problema # 421, pero no necesariamente c贸mo llegaste all铆. En casos como este, es posible que desee aplastar las confirmaciones juntas para crear una confirmaci贸n agradable y limpia para este problema.

    Para aplastar las confirmaciones, deber谩 usar el rebase comando como este:

    $ git rebase -i HEAD~4
    

    Esto le dice a Git que vuelva a aplicar las 煤ltimas 4 confirmaciones sobre otra sugerencia base. los -i bandera es la abreviatura de --interactive, que abrir谩 su editor de texto predeterminado para que pueda editar los comandos antes de reajustar. Para nuestro ejemplo anterior, ver铆amos un editor de texto con las 煤ltimas 4 confirmaciones en orden inverso, como el siguiente:

    pick b1339db Fixed issue #421
    pick cc4f2b5 Didn't work, trying something else
    pick 7729f48 Fixed typo
    pick b7c864c Seriously, #421 is fixed now
    

    Cualquier confirmaci贸n con la palabra clave “picK” permanecer谩 en el 谩rbol de fuentes. Sin embargo, si reemplaza “pick” con “squash”, esa confirmaci贸n se combinar谩 con la anterior. Continuando con nuestro ejemplo, nos gustar铆a combinar las confirmaciones de esta manera:

    pick b1339db Fixed issue #421
    squash cc4f2b5 Didn't work, trying something else
    squash 7729f48 Fixed typo
    squash b7c864c Seriously, #421 is fixed now
    

    Guardar sus ediciones en este archivo dar谩 como resultado una 煤nica confirmaci贸n que es la combinaci贸n de los cambios de los cuatro, y el mensaje de confirmaci贸n es una combinaci贸n de los 4 tambi茅n. Para especificar un nuevo mensaje de confirmaci贸n, debe utilizar “reword” en lugar de “elegir” en la primera confirmaci贸n.

    O, si desea mantener solo el mensaje de confirmaci贸n “elegido”, puede usar “arreglar” en lugar de “aplastar” para los dem谩s, lo que har谩 lo mismo que aplastar pero descartar谩 el mensaje de confirmaci贸n.

    Estos son todos los comandos que se pueden usar al reajustar:

    • pick (o p): use commit
    • reword (o r): use commit, pero edite el mensaje de commit
    • edit (o e): use commit, pero det茅ngase para enmendar
    • squash (o s): usa la confirmaci贸n, pero fusiona la confirmaci贸n anterior
    • fixup (o f): como “squash”, pero descarta el mensaje de registro de esta confirmaci贸n
    • exec (o x): ejecutar comando (el resto de la l铆nea) usando shell
    • drop (o d): eliminar el compromiso

    Y algunas otras notas importantes de Git con respecto al modo interactivo al reajustar confirmaciones:

    • Las l铆neas se pueden reordenar, se ejecutan de arriba a abajo.
    • Si quita una l铆nea all铆 ese compromiso se perder谩.
    • Sin embargo, si elimina todo, la rebase se cancelar谩.
    • Tenga en cuenta que las confirmaciones vac铆as est谩n comentadas

    Arreglar sus confirmaciones de esta manera es una buena pr谩ctica antes de compartir con los miembros de su equipo o antes de enviar los cambios a un repositorio remoto. Es mucho m谩s f谩cil leer un 谩rbol de fuentes y comprender qu茅 errores se han corregido cuando una sola confirmaci贸n corrige un solo error, por ejemplo. Sin embargo, si alguna de estas confirmaciones ya se ha enviado al repositorio remoto, no se recomienda aplastar las confirmaciones, ya que estar铆a reescribiendo el historial.

    Para obtener m谩s informaci贸n, recomiendo leer los documentos de Git para rebase mando Aqu铆.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *