Cómo verificar que una confirmación se ha aplicado utilizando git cherry-pick

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Git es un potente sistema de control de versiones que permite a los desarrolladores gestionar su base de código de manera efectiva. Una de las características clave de Git es la capacidad de aplicar selectivamente confirmaciones (commits) de una rama a otra utilizando el comando cherry-pick. Este tutorial lo guiará a través del proceso de verificación de que una confirmación se ha aplicado correctamente utilizando Git cherry-pick, así como las estrategias para resolver cualquier conflicto que pueda surgir durante el proceso.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/cherry_pick("Cherry Pick") git/BranchManagementGroup -.-> git/rebase("Reapply Commits") subgraph Lab Skills git/status -.-> lab-417334{{"Cómo verificar que una confirmación se ha aplicado utilizando git cherry-pick"}} git/commit -.-> lab-417334{{"Cómo verificar que una confirmación se ha aplicado utilizando git cherry-pick"}} git/log -.-> lab-417334{{"Cómo verificar que una confirmación se ha aplicado utilizando git cherry-pick"}} git/cherry_pick -.-> lab-417334{{"Cómo verificar que una confirmación se ha aplicado utilizando git cherry-pick"}} git/rebase -.-> lab-417334{{"Cómo verificar que una confirmación se ha aplicado utilizando git cherry-pick"}} end

Comprender Git Cherry-pick

Git cherry-pick es una función poderosa que te permite aplicar selectivamente confirmaciones (commits) de una rama a otra. Esto es especialmente útil cuando deseas incorporar cambios específicos de una rama a otra, sin fusionar toda la rama.

¿Qué es Git Cherry-pick?

Git cherry-pick es un comando que toma los cambios introducidos por una única confirmación y los aplica a otra rama. Esto es útil cuando deseas:

  1. Aplicar correcciones hacia atrás (Backport Fixes): Si tienes una corrección de error en una rama que deseas aplicar a otra rama, puedes utilizar cherry-pick para hacerlo.
  2. Volver a aplicar confirmaciones (Reapply Commits): Si accidentalmente rebasas o restableces una rama y deseas volver a aplicar confirmaciones específicas, puedes utilizar cherry-pick para hacerlo.
  3. Mantener un historial de confirmaciones lineal: Al hacer cherry-pick de confirmaciones, puedes mantener un historial de confirmaciones lineal, que puede ser más fácil de entender y gestionar.

Cuándo utilizar Git Cherry-pick

Git cherry-pick se utiliza típicamente en los siguientes escenarios:

  1. Aplicar correcciones hacia atrás (Backporting Fixes): Cuando tienes una corrección de error en una rama que deseas aplicar a otra rama, como una rama de lanzamiento o una rama estable.
  2. Mantener un historial de confirmaciones lineal: Si tienes una rama de función que se ha desviado significativamente de la rama principal, puedes hacer cherry-pick de confirmaciones específicas para mantener un historial de confirmaciones lineal.
  3. Volver a aplicar confirmaciones (Reapplying Commits): Si accidentalmente rebasas o restableces una rama y deseas volver a aplicar confirmaciones específicas, puedes utilizar cherry-pick para hacerlo.

Cómo funciona Git Cherry-pick

Cuando utilizas el comando git cherry-pick, Git crea una nueva confirmación en la rama actual que tiene los mismos cambios que la confirmación especificada. Esta nueva confirmación tiene un hash de confirmación diferente, pero los cambios son los mismos que la confirmación original.

graph LR A[Commit A] --> B[Commit B] B --> C[Commit C] C --> D[Commit D] D --> E[Commit E] E --> F[Commit F] F --> G[Commit G] G --> H[Commit H] H --> I[Commit I] I --> J[Commit J] J --> K[Commit K] K --> L[Commit L] L --> M[Commit M] M --> N[Commit N] N --> O[Commit O] O --> P[Commit P]

En el diagrama anterior, si deseas aplicar los cambios de Commit E a una rama diferente, puedes utilizar git cherry-pick E para crear una nueva confirmación con los mismos cambios que Commit E.

Aplicar y verificar confirmaciones (commits) seleccionadas con cherry-pick

Aplicar confirmaciones seleccionadas con cherry-pick

Para aplicar una confirmación seleccionada con cherry-pick, puedes utilizar el comando git cherry-pick seguido del hash de la confirmación o el nombre de la rama. Por ejemplo:

$ git cherry-pick e8e8c23

Esto aplicará los cambios de la confirmación con el hash e8e8c23 a la rama actual.

También puedes seleccionar con cherry-pick un rango de confirmaciones utilizando la siguiente sintaxis:

$ git cherry-pick <start_commit>..<end_commit>

Esto aplicará todas las confirmaciones en el rango especificado a la rama actual.

Verificar confirmaciones seleccionadas con cherry-pick

Después de aplicar una confirmación seleccionada con cherry-pick, puedes verificar que la confirmación se haya aplicado correctamente utilizando los siguientes comandos:

  1. Revisar el registro de confirmaciones (Commit Log): Puedes utilizar el comando git log para ver el historial de confirmaciones y asegurarte de que la confirmación seleccionada con cherry-pick esté presente.
$ git log --oneline
  1. Inspeccionar la diferencia de la confirmación (Commit Diff): Puedes utilizar el comando git diff para comparar los cambios introducidos por la confirmación seleccionada con cherry-pick con los cambios en la rama actual.
$ git diff <cherry-picked_commit>
  1. Revisar el hash de la confirmación (Commit Hash): Puedes comparar el hash de la confirmación seleccionada con cherry-pick con el hash de la confirmación en la rama actual para asegurarte de que se haya aplicado la confirmación correcta.
$ git rev-parse HEAD
  1. Verificar el mensaje de la confirmación (Commit Message): Puedes revisar el mensaje de la confirmación seleccionada con cherry-pick para asegurarte de que coincida con el mensaje de la confirmación original.
$ git show --oneline --name-only <cherry-picked_commit>

Siguiendo estos pasos, puedes asegurarte de que la confirmación seleccionada con cherry-pick se haya aplicado correctamente y de que los cambios se hayan incorporado a la rama actual.

Resolver conflictos de cherry-pick

Comprender los conflictos de cherry-pick

Cuando realizas un cherry-pick de una confirmación (commit), es posible que los cambios en la confirmación entren en conflicto con los cambios en la rama actual. Esto puede suceder cuando las mismas líneas de código se han modificado tanto en la confirmación original como en la rama actual.

Cuando se produce un conflicto durante un cherry-pick, Git pausará el proceso y marcará las áreas en conflicto en los archivos afectados. Tendrás que resolver estos conflictos manualmente antes de poder completar el cherry-pick.

Resolver conflictos

Para resolver conflictos durante un cherry-pick, sigue estos pasos:

  1. Identificar los archivos en conflicto: Después de que se pause el proceso de cherry-pick, puedes utilizar el comando git status para ver qué archivos tienen conflictos.
$ git status
  1. Abrir los archivos en conflicto: Abre los archivos en conflicto en un editor de texto y busca los marcadores de conflicto. Estos marcadores indican las áreas donde Git no pudo fusionar automáticamente los cambios.
<<<<<<< HEAD
## Tus cambios
=======
## Cambios de la confirmación seleccionada con cherry-pick
>>>>>>> e8e8c23 (Mensaje de confirmación)
  1. Resolver los conflictos: Edita manualmente las secciones en conflicto del archivo para resolver los conflictos. Mantén los cambios que deseas mantener y elimina los marcadores de conflicto.

  2. Preparar los conflictos resueltos: Después de resolver los conflictos, utiliza el comando git add para preparar (stage) los archivos resueltos.

$ git add <archivo_en_conflicto>
  1. Continuar el cherry-pick: Una vez que se hayan resuelto y preparado todos los conflictos, puedes continuar el proceso de cherry-pick utilizando el comando git cherry-pick --continue.
$ git cherry-pick --continue

Si deseas abortar el proceso de cherry-pick en cualquier momento, puedes utilizar el comando git cherry-pick --abort.

$ git cherry-pick --abort

Siguiendo estos pasos, puedes resolver con éxito cualquier conflicto que surja durante una operación de cherry-pick y completar el proceso de aplicación de la confirmación seleccionada a tu rama actual.

Resumen

En este tutorial de Git, has aprendido cómo utilizar el comando cherry-pick para aplicar selectivamente confirmaciones (commits) de una rama a otra. También has descubierto técnicas para verificar que la confirmación se ha aplicado con éxito y cómo resolver cualquier conflicto que pueda surgir durante el proceso. Al dominar estas habilidades de Git, puedes garantizar la integridad de tu repositorio y mantener una base de código limpia y organizada.