Pregunta ¿Qué significa cherry-picking a commit con git?


Recientemente, me han pedido que elija una confirmación. Pero no tengo idea de lo que significa. Entonces que hace cherry picking un compromiso en git significa? ¿Cómo lo haces?


1356
2018-02-18 07:20


origen


Respuestas:


Escoger cereza en git significa elegir un compromiso de una rama y aplicarlo en otra.

Esto está en contraste con otras formas, como merge y rebase que normalmente aplican muchos commits en otra rama.

  1. Asegúrate de estar en la rama a la que deseas aplicar el compromiso.

    git checkout master
    
  2. Ejecuta lo siguiente:

    git cherry-pick <commit-hash>
    

NÓTESE BIEN.:

  1. Si elige cuidadosamente de una sucursal pública, debería considerar usar

    git cherry-pick -x <commit-hash>
    

    Esto generará un mensaje de compromiso estandarizado. De esta manera, usted (y sus compañeros de trabajo) aún pueden realizar un seguimiento del origen del compromiso y pueden evitar conflictos de fusión en el futuro.

  2. Si tiene notas adjuntas a la confirmación, no siguen la selección. Para traerlos también, debes usar:

    git notes copy <from> <to>
    

Enlaces adicionales:


1621
2018-02-18 07:29



Esta cita está tomada de; Control de versiones con Git (Muy buen libro, te animo a que lo compres si estás interesado en git)

Editar: Como esta respuesta todavía está recibiendo impresión, me gustaría agregar un video tutorial muy bueno sobre esto:

Youtube: Introducción a Git cherry-pick

Usando git cherry-pick El comando git cherry-pick commit aplica el   cambios introducidos por la confirmación nombrada en la rama actual. Va a   introducir un compromiso nuevo y distinto Estrictamente hablando, usando git   cherry-pick no altera el historial existente dentro de un repositorio;   en cambio, se agrega a la historia. Al igual que con otras operaciones de Git que   introducir cambios a través del proceso de aplicación de un diff, puede necesitar   resolver conflictos para aplicar completamente los cambios de la confirmación dada .   El comando git cherry-pick normalmente se usa para introducir   se compromete desde una rama dentro de un repositorio a una rama diferente. UN   el uso común es realizar confirmaciones de puertos hacia adelante o hacia atrás desde un mantenimiento   sucursal a una rama de desarrollo.

$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, above

antes de: before

después: after


180
2018-05-13 15:06



Cherry Picking en Git está diseñado para aplicar algún compromiso de una rama a otra. Se puede hacer si, por ejemplo. cometió un error y cometió un cambio en la rama incorrecta, pero no desea fusionar toda la rama. Puedes simplemente, por ej. invierta la confirmación y selecciónelo en otra rama.

Para usarlo, solo necesitas git cherry-pick hash, dónde hash es un hash de confirmación de otra rama.

Para ver el procedimiento completo, consulte: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html


124
2018-02-18 07:29



cherry-pick es una característica de Git. Si alguien quiere Comprometer commits específicos en una rama a una rama de destino, entonces se usa cherry-pick.
        git cherry-pick los pasos son los siguientes.

  1. checkout (cambiar a) rama de destino.
  2. git cherry-pick <commit id>
    

    Aquí commit id es id de actividad de otra branch.Eg.

    git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
    
  3. empuje hacia la rama de destino

Visitar https://git-scm.com/docs/git-cherry-pick


24
2017-08-24 09:39



Puedes pensar si una selección de cereza es similar a una rebase, o más bien se administra como una rebase. Con esto, quiero decir que toma una confirmación existente y la regenera tomando, como punto de partida, el jefe de la sucursal en la que se encuentra actualmente.

UN rebase toma una confirmación que tenía un padre X y regenera el compromiso como si realmente tuviera un padre Y, y esto es precisamente lo que cherry-pick hace.

Cherry Pick es más acerca de cómo seleccionar los commits. Con pull (rebase), git regenera implícitamente tus confirmaciones locales además de lo que se arrastra a tu rama, pero con cherry-pick selecciona explícitamente algunos commit (s) y los regenera (implícitamente) en la parte superior de su rama actual.

Entonces, la manera en que lo haces difiere, pero bajo el capó son operaciones muy similares: la regeneración de compromisos.


7
2018-01-31 22:19



Es como Copiar (de algún lugar) y Pegar (a alguna parte), pero para confirmaciones específicas.

Si quiere hacer una corrección, por ejemplo, puede usar la cherry-pick característica.

Haz tu cherry-pick en una rama de desarrollo, y merge que se compromete con una rama de lanzamiento. Del mismo modo, haz un cherry-pick de una rama de lanzamiento a la maestra. Voila


2
2017-10-07 11:55