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 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.
LinkedInArtículo relacionado - Git Commit
- Agregar todos los archivos para confirmar excepto un archivo
- Agregar un archivo a la última confirmación en Git
- Cierra el editor de Git Commit en Windows
- Combinar selectivamente los cambios de diferentes ramas en Git
- Comprender la función de aprobación de Git Commit
- Confirmaciones de la lista de Git