Copiar commits de otra rama en Git

Abdul Jabbar 23 agosto 2022
Copiar commits de otra rama en Git

Mientras trabajamos en Git, llega un punto en el que queremos integrar commits individuales específicas de una rama a nuestra rama HEAD actual. Puede ser porque el cliente quiere algunos cambios en un producto o algún error que se haya informado.

O lo cometimos por error, o ya no queremos ese compromiso en nuestra rama anterior y lo queremos en nuestra rama HEAD actual.

La respuesta al problema anterior es CHERRY PICK. Entonces, en las siguientes secciones, discutiremos el comando cherry-pick en detalle.

Copiar commits de otra rama en Git

Recoger un compromiso particular de una rama y copiarlo en nuestra rama HEAD actual se llama Cherry Picking.

Git tiene un comando particular para este propósito, es decir, el comando cherry-pick de Git. El otro uso de la selección selectiva es aplicar cambios específicos antes de fusionarnos o desarrollar una solicitud de incorporación de cambios.

Esto puede ser muy útil para deshacer cambios.

Este artículo discutirá la selección de un commit específica de una rama a otra.

Ver commits usando el comando git log

Primero, usaremos el git log para investigar qué compromiso queremos elegir. El siguiente es el resultado de la rama del comando git log:

d23216 - 953222	- 953219 - aa3s36 - 532d37 [master]
           \
            76cada - 66ecb3	- b886a0 [feature]

Aquí en la rama feature, hay un compromiso 66ecb3 de otra rama que solo queremos en nuestra rama master.

Elijamos ese compromiso específico y transfiéralo a la rama actual, la rama master. Luego, podemos usar esos cambios del commit en el futuro para nuestro proyecto.

Ejecute el comando git cherry-pick para copiar commits

Aquí, git cherry-pick vendrá a nuestro rescate. 66ecb3 es la guinda, y queremos elegirla entre muchos intentos que se han hecho en el pasado.

Seleccionémoslo de otra rama ejecutando el siguiente comando.

git checkout master
git cherry-pick 66ecb3

Una vez que el comando mencionado anteriormente se ejecuta con éxito, ahora, 66ecb3 actúa como una nueva confirmación en nuestra rama principal.

Así que Git hizo una copia de el commit que necesitábamos, con los mismos mensajes del commit y cambios en la rama master. Eventualmente, se crea una nueva confirmación con su nueva ID.

Limpie la otra rama usando el comando git reset

Si cambiamos a la rama feature, veremos la misma confirmación en su lugar anterior. Esto se debe a que Git lo copió a la otra rama en lugar de moverlo.

Ha dejado intacto el original.

Ahora, para limpiar y deshacer, usaremos el comando git reset después de verificar la rama requerida.

$ git checkout Test
Switched to branch 'Test'
$ git reset --hard HEAD~1
HEAD is now at 66ecb3 Change the title and delete the error page
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

Artículo relacionado - Git Commit