Digamos que tiene un repositorio de git. Estás trabajando en el maestro rama y has hecho algunos compromisos (A, B y C) sobre el maestro rama también.
Ahora, de repente tienes una gran idea. Entonces, creas otra rama Idea Nueva. Entonces, comenzaste a hacer comodidades (E, F y G) allá.
También hiciste algunos cambios en el maestro sucursal nuevamente y agregó un nuevo compromiso H.
Ahora, si su nueva idea es un éxito, entonces es posible que desee fusionar el Idea Nueva rama a la maestro rama. Digamos que lo fusionaste. Creará un nuevo commit I Como puede ver en la figura a continuación. La nueva confirmación contendrá todo (todos los cambios en los compromisos mi, F, y GRAMO) de la rama Idea Nueva.
Ahora, digamos, no quieres fusionar todos los compromisos 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 Git Cherry Pick. Git Cherry Pick te permite hacer eso. Solo encuentras el hash de la confirmación que desea elegir y aplicarlo a la rama que desee. Muy simple.
En este artículo, te mostraré cómo elegir en Git. Entonces empecemos.
Git Cherry Pick Workflow:
En esta sección, voy a configurar un repositorio de Git de una manera que comprenderá por qué se usa Git Cherry Pick y cómo elegir en Git.
Primero, inicialice un repositorio de git vacío Cherry-Pick-Demo/ como sigue:
$ git init cherry-pick-demo
Ahora, navegue al 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 puesta en escena de la siguiente manera:
$ git add .
Ahora, comete los cambios de la siguiente manera:
$ git commit -m 'commit inicial'
Ahora, crea un .gitignore Archivo con el siguiente contenido:
Agregue el archivo al área de preparación.
$ git add .
Cometer los cambios:
$ git commit -m 'agregado .archivo gitignore '
Como puede ver, tengo 2 comodidades ahora en mi maestro rama.
$ git log -enneline
Ahora, quiero empujar mi repositorio de 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í.
Entonces, agregue una URL de repositorio de git remoto de la siguiente manera:
$ git remoto agregar origen [email protected]: ~/cherry-pick-demo.git
Ahora, empuja el maestro ramificarse en el repositorio de git remoto de la siguiente manera:
$ git push origin maestro
Ahora, digamos Beto quiere contribuir al proyecto. Entonces, clonó el repositorio de git en su computadora.
$ git clone [email protected]: ~/cherry-pick-demo.git myproject
Ahora, Bob navega a su directorio de proyecto.
$ CD myProject/
También tiene los 2 compromisos que he agregado.
$ git log -enneline
Ahora, Bob crea un prueba rama para probar sus ideas.
$ git checkout -b prueba
Él decide cambiar el valor de retorno con una constante Exit_success desde el stdlib biblioteca.
Agrega los cambios al área de puesta en escena.
$ git add .
Comete los cambios.
$ git commit -m 'usado 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.
Él comete los cambios nuevamente.
$ git add .
$ git commit -m 'Función de printmessage () agregada'
Entonces, Bob usa la función en el programa.
Él comete los cambios nuevamente.
$ git add .
$ git commit -m 'usado imprentMessage () función para imprimir el mensaje'
Ahora, Bob tiene los siguientes compromisos en el prueba rama.
Ahora, Bob empuja la rama de prueba al repositorio remoto Git.
Prueba de origen de $ git push
Ahora, Bob te llama y te cuenta sobre los increíbles cambios que hizo. Entonces, obtuvo los cambios en el repositorio remoto Git a su propio repositorio local.
$ git busca
Ahora ves una nueva rama origen/prueba.
También encontraste 3 nuevas comiendas que Bob hizo.
$ git log -oneline origen/prueba
Ahora, te gustaría saber qué cambios hicieron 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.
También te gusta este compromiso.
Entonces, quieres fusionar 2 de los 3 compromisos hechos. Si ha usado GIT Fusion para fusionar la prueba de la sucursal, se aplicarían los 3 compromisos. Pero, con la función Git Cherry Pick, solo puede fusionar los compromisos que le gusta.
Tenga en cuenta que cuando la selección de cereza se compromete en GIT, siempre comienza con el compromiso más antiguo y avanza hacia el poco más nuevo por poco.
Antes, la cereza elegí, el principal.C El archivo se ve de la siguiente manera.
Ahora, eligamos a Cherry el más antiguo de los 2 compromisos, 9A4E532 de la siguiente manera:
$ Git Cherry-Pick 9A4E532
Un conflicto de fusión! Esto puede pasar.
Ahora, abra el principal.C archivar y arreglar el conflicto de fusión.
El archivo final debe verse de la siguiente manera.
Ahora, agregue los cambios al área de puesta en escena.
$ git add.
Ahora, comete los cambios de la siguiente manera:
$ git cherry-pick-continue
NOTA: También puedes usar Git Commit aquí también. Tu decides. yo prefiero Git Cherry -Pick -Continue ya que usará automáticamente el mensaje de confirmación de la confirmación que estoy elegiendo.
Ahora, escriba su mensaje de confirmación aquí y guarde el archivo.
Se debe agregar una nueva confirmación.
Ahora, Cherry elige la próxima compromiso de la siguiente manera:
$ git cherry-pick 08BA5E7
Sin conflicto de fusión. Excelente! Se debe agregar una nueva confirmación automáticamente.
Como puedes ver, obtengo exactamente lo que quería. Solo fusioné los compromisos que necesitaba.
Entonces, así es como eliges en Git. Gracias por leer este artículo.