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.
- Podemos editar un mensaje de confirmación anterior.
- Podemos combinar dos o más confirmaciones en una.
- 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.
pick
: lo usamos para reordenar nuestro historial de confirmaciones.reformular
: lo usamos cuando queremos cambiar el mensaje de confirmación. No afecta a los cambios introducidos por el commit.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.squash
: lo usamos para combinar dos confirmaciones en una y darnos la oportunidad de dar a la nueva confirmación un nuevo mensaje.fixup
: es lo mismo quesquash
, 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.
Nuestras confirmaciones están ordenadas de la más antigua a la más nueva.
En nuestro editor de texto, haremos lo siguiente:
- Aplaste la confirmación (
fa39187
) en la confirmación (1fc6c95
), usandosquash
. - Mueva la última confirmación (
7b36971
) antes de la confirmación (6b2481b
), y manténgala comopick
. - Combine la confirmación (
c619268
) en la confirmación (6b2481b
) y descarte el mensaje de confirmación utilizandofixup
. - Dividir (
dd1475d
) usandoeditar
. - Corrija el mensaje de confirmación (
4ca2acc
) usandoreword
.
Modificaremos los comandos en el editor de texto como se muestra a continuación.
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.
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.
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:
- Ejecute el comando
git reset --soft HEAD^
a la referenciaHEAD
al padre. - 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.
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 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