Use Git Rebase en la línea de comando

John Wachira 15 febrero 2024
Use Git Rebase en la línea de comando

Este artículo discutirá el uso efectivo del comando git rebase. El comando git rebase nos permite alterar una serie de confirmaciones y modificar el historial de confirmaciones en nuestro repositorio.

Podemos editar, reordenar o aplastar confirmaciones usando el comando git rebase.

Utilice git rebase en la línea de comandos

Aquí hay algunas opciones de uso común.

  1. Podemos editar un mensaje de confirmación anterior.
  2. Podemos combinar dos o más confirmaciones en una.
  3. Podemos revertir o eliminar confirmaciones innecesarias en nuestro repositorio.

Al reorganizar, podemos reorganizar contra una rama o contra un punto en el tiempo en nuestro repositorio.

Para rebase contra una rama, ejecutamos:

$ git rebase --interactive <branch_name>

Para rebase contra un punto en el tiempo, ejecutamos:

$ git rebase --interacive HEAD~

Podemos agregar HEAD~7 para reorganizar hasta el séptimo compromiso.

Veamos los comandos disponibles durante el rebase.

  1. pick: lo usamos para reordenar nuestro historial de confirmaciones.
  2. reformular: lo usamos cuando queremos cambiar el mensaje de confirmación. No afecta a los cambios introducidos por el commit.
  3. editar: lo usamos cuando queremos editar o modificar un compromiso. Podemos dividir una confirmación en confirmaciones más pequeñas o eliminar errores introducidos por la confirmación.
  4. squash: lo usamos para combinar dos confirmaciones en una y darnos la oportunidad de dar a la nueva confirmación un nuevo mensaje.
  5. fixup: es lo mismo que squash, excepto que descarta el mensaje para la confirmación fusionada y usa el que está arriba.

Ahora intentaremos usar las opciones anteriores en un ejemplo. En este ejemplo, nos basaremos en un punto en el tiempo en nuestro repositorio Delftscopetech.

Volveremos a basar HEAD~7. Corremos:

$ git rebase --interactive HEAD~7

El editor de texto muestra el resultado a continuación.

git rebase hasta el séptimo compromiso

Nuestras confirmaciones están ordenadas de la más antigua a la más nueva.

En nuestro editor de texto, haremos lo siguiente:

  1. Aplaste la confirmación (fa39187) en la confirmación (1fc6c95), usando squash.
  2. Mueva la última confirmación (7b36971) antes de la confirmación (6b2481b), y manténgala como pick.
  3. Combine la confirmación (c619268) en la confirmación (6b2481b) y descarte el mensaje de confirmación utilizando fixup.
  4. Dividir (dd1475d) usando editar.
  5. Corrija el mensaje de confirmación (4ca2acc) usando reword.

Modificaremos los comandos en el editor de texto como se muestra a continuación.

modificar el editor de texto

Podemos guardar y cerrar el editor de texto, y Git iniciará el rebase.

Git omitirá el pick 1fc6c95 y abrirá un editor ya que el squash requiere algunos aportes de nuestra parte. Debe tener un aspecto como este.

Editor abierto de Git - calabaza

Puede cerrar el editor y continuar con la reorganización si está satisfecho con los cambios. Los siguientes tres comandos no requieren nuestra entrada, pero la edición sí e imprime el siguiente mensaje en la terminal.

Editor abierto de Git - editar

En este punto, podemos realizar cualquier cambio y crear una nueva confirmación con el comando git commit --amend. Una vez hecho esto, podemos continuar ejecutando el comando git rebase --continue.

Ejecute siempre git rebase --continue después de realizar los cambios. No puede volver a establecer la base más tarde si olvida ejecutar el comando y continuar con la codificación.

Sin embargo, puedes remediarlo de la siguiente manera:

  1. Ejecute el comando git reset --soft HEAD^ a la referencia HEAD al padre.
  2. Ejecute git rebase --continue para finalizar el rebase.

También puede abortar el rebase ejecutando el comando git rebase --abort y rehacer el proceso. Esto requerirá que resuelva el conflicto de combinación nuevamente.

La parte reformular requerirá nuestra entrada, y Git abre el editor de texto con la información a continuación.

Editor abierto de Git - reformular

Podemos cambiar el texto, guardar el archivo y finalizar el rebase.

En pocas palabras, el comando git rebase nos permite cambiar el estado de nuestro repositorio en cuanto a los commits. Podemos aplastar, cambiar el nombre o reordenar las confirmaciones.

Preste atención cuando fusione conflictos mientras rebase.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Artículo relacionado - Git Rebase