Git

Cómo Cherry Pick en Git

Cómo Cherry Pick en Git
git cherry pick es una función de combinación de Git. Pero hay una ligera diferencia entre git cherry pick y git merge. Además, el caso de uso es diferente. Veamos primero cómo funciona git merge, luego compárelo con git cherry pick. De esa manera, comprenderá cuándo usar git merge y cuándo usar git cherry pick.

Digamos que tienes un repositorio de Git. Estás trabajando en el Maestro branch y has realizado algunas confirmaciones (A, B y C) sobre el Maestro rama también.

Ahora, de repente tienes una gran idea. Entonces, creas otra rama Idea Nueva. Luego, comenzaste a realizar confirmaciones (E, F y G) allí.

También hizo algunos cambios en el Maestro rama de nuevo y agregó una nueva confirmación H.

Ahora, si su nueva idea es un éxito, es posible que desee fusionar el Idea Nueva rama a la Maestro rama. Digamos que lo fusionaste. Creará un nuevo compromiso I como puede ver en la figura siguiente. La nueva confirmación contendrá todo (todos los cambios en las confirmaciones mi, F, y GRAMO) de la rama Idea Nueva.

Ahora, digamos, no desea fusionar todas las confirmaciones de la rama Idea Nueva hacia Maestro rama. Solo desea fusionar los cambios (solo los cambios de diferencia) en la confirmación F hacia Maestro rama. Aquí es donde entra en juego git cherry pick. Git cherry pick te permite hacer eso. Simplemente encuentre el hash de la confirmación que desea seleccionar y aplíquelo a la rama que desee. Muy simple.

En este artículo, voy a mostrarte cómo seleccionar en Git. Entonces empecemos.

Flujo de trabajo de Git Cherry Pick:

En esta sección, voy a configurar un repositorio de Git de una manera que comprenda por qué se usa git cherry pick y cómo seleccionar cherry pick en Git.

Primero, inicializa un repositorio de Git vacío cherry-pick-demo / como sigue:

$ git init cherry-pick-demo

Ahora, navegue hasta el repositorio de la siguiente manera:

$ cd cherry-pick-demo /

Ahora, crea un principal.C archivo con el siguiente contenido:

Ahora, agregue el archivo al área de preparación de la siguiente manera:

$ git agregar .

Ahora, confirme los cambios de la siguiente manera:

$ git commit -m 'compromiso inicial'

Ahora, crea un .gitignore archivo con el siguiente contenido:

Agregue el archivo al área de preparación.

$ git agregar .

Confirme los cambios:

$ git commit -m 'agregado .archivo gitignore '

Como puede ver, ahora tengo 2 confirmaciones en mi Maestro rama.

$ git log --en línea

Ahora, quiero enviar mi repositorio Git local a un servidor Git remoto para que otras personas puedan trabajar en este repositorio. También puedes usar GitHub aquí. Usaré un servidor SSH local para esto aquí.

Por lo tanto, agregue una URL de repositorio Git remoto de la siguiente manera:

$ git remoto agregar origen git @ git.linuxhint.com: ~ / cherry-pick-demo.git

Ahora, presione el Maestro bifurque al repositorio remoto de Git de la siguiente manera:

$ git push origin master

Ahora digamos Beto quiere contribuir al proyecto. Entonces, clonó el repositorio de Git en su computadora.

$ git clon git @ git.linuxhint.com: ~ / cherry-pick-demo.git myproject

Ahora, Bob navega a su directorio de proyectos.

$ cd myproject /

Él también tiene las 2 confirmaciones que agregué.

$ git log --en línea

Ahora, Bob crea un prueba rama para probar sus ideas.

$ git checkout -b prueba

Decide cambiar el valor de retorno con una constante EXIT_SUCCESS desde el stdlib Biblioteca.

Agrega los cambios al área de preparación.

$ git agregar .

Compromete los cambios.

$ git commit -m 'usó EXIT_SUCCESS en lugar de 0 como valor de retorno'

Ahora, decide usar una función printMessage () para imprimir el mensaje. Entonces, escribe la función.

Vuelve a cometer los cambios.

$ git agregar .
$ git commit -m 'agregada función printMessage ()'

Entonces, Bob usa la función en el programa.

Vuelve a cometer los cambios.

$ git agregar .
$ git commit -m 'usó la función printMessage () para imprimir el mensaje'

Ahora, Bob tiene las siguientes confirmaciones en el prueba rama.

Ahora, Bob empuja la rama de prueba al repositorio remoto de Git.

$ git prueba de origen de empuje

Ahora, Bob te llama y te cuenta los increíbles cambios que hizo. Entonces, buscó los cambios en el repositorio remoto de Git en su propio repositorio local.

$ git fetch

Ahora ves una nueva rama origen / prueba.

También encontraste 3 nuevas confirmaciones que hizo Bob.

$ git log: origen / prueba en línea

Ahora, le gustaría saber qué cambios hizo Bob.

$ git log -p origen / prueba

Decide no reemplazar el valor de retorno con EXIT_SUCCESS como lo hizo Bob.

Te gusta el concepto de usar una función para imprimir mensajes.

A ti también te gusta este compromiso.

Entonces, quieres fusionar 2 de las 3 confirmaciones que hizo bob. Si ha utilizado git merge para fusionar la prueba de la rama, se aplicarán las 3 confirmaciones. Pero, con la función git cherry pick, solo puede fusionar las confirmaciones que desee.

Tenga en cuenta que cuando selecciona las confirmaciones en Git, siempre comienza con la confirmación más antigua y avanza hacia la más nueva poco a poco.

Antes, escogí la cereza, el principal.C el archivo se ve de la siguiente manera.

Ahora, escojamos la más antigua de las 2 confirmaciones, 9a4e532 de la siguiente manera:

$ git cherry-pick 9a4e532

Un conflicto de fusión! Esto puede pasar.

Ahora, abre el principal.C archivar y arreglar el conflicto de fusión.

El archivo final debe tener el siguiente aspecto.

Ahora, agregue los cambios al área de preparación.

$ git agregar.

Ahora, confirme los cambios de la siguiente manera:

$ git cherry-pick --continuar

NOTA: También puedes usar git commit aquí también. Tu decides. yo prefiero git cherry-pick -continuar ya que usará automáticamente el mensaje de confirmación de la confirmación que estoy seleccionando.

Ahora, escriba su mensaje de confirmación aquí y guarde el archivo.

Se debe agregar una nueva confirmación.

Ahora, elija la siguiente confirmación de la siguiente manera:

$ git cherry-pick 08ba5e7

Sin conflicto de fusión. Estupendo! Se debe agregar una nueva confirmación automáticamente.

Como puede ver, obtengo exactamente lo que quería. Solo fusioné las confirmaciones que necesitaba.

Entonces, así es como eliges la cereza en Git. Gracias por leer este artículo.

Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...
Puertos de código abierto de motores de juegos comerciales
Las recreaciones gratuitas, de código abierto y de motores de juegos multiplataforma se pueden usar para jugar títulos de juegos antiguos y también al...