Buscar..


Introducción

A cherry-pick toma el parche que se introdujo en un compromiso e intenta volver a aplicarlo en la sucursal en la que se encuentra actualmente.

Fuente: Libro Git SCM

Sintaxis

  • git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S [key-id]] commit ...
  • git cherry-pick --continuar
  • git cherry-pick --quit
  • git cherry-pick --abort

Parámetros

Parámetros Detalles
-e, --editar Con esta opción, git cherry-pick le permitirá editar el mensaje de confirmación antes de confirmar.
-X Cuando registre la confirmación, agregue una línea que diga "(seleccionado desde la confirmación ...)" al mensaje de confirmación original para indicar de qué confirmación se realizó la selección. Esto se hace sólo para selecciones de cereza sin conflictos.
--ff Si el HEAD actual es el mismo que el padre de la confirmación seleccionada, entonces se realizará un avance rápido para esta confirmación.
--continuar Continúe la operación en curso utilizando la información en .git / secuenciador. Se puede usar para continuar después de resolver conflictos en una selección o revertir fallida.
--dejar Olvídate de la operación actual en curso. Se puede usar para borrar el estado del secuenciador después de un error de selección o revertir.
--abortar Cancelar la operación y volver al estado de secuencia previa.

Copiando un commit de una rama a otra

git cherry-pick <commit-hash> aplicará los cambios realizados en una confirmación existente a otra rama, mientras registra una nueva confirmación. Esencialmente, puede copiar confirmaciones de rama a rama.

Dado el siguiente árbol (Fuente)

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
           \
            76cada - 62ecb3 - b886a0 [feature]

Digamos que queremos copiar b886a0 a master (encima de 5a6057 ).

Podemos correr

git checkout master
git cherry-pick b886a0

Ahora nuestro árbol lucirá algo como:

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 - a66b23 [master]
           \
            76cada - 62ecb3 - b886a0 [feature]

Donde el nuevo commit a66b23 tiene el mismo contenido (fuente diff, mensaje de confirmación) que b886a0 (pero un padre diferente). Tenga en cuenta que cherry-picking solo recogerá los cambios en ese commit ( b886a0 en este caso) no todos los cambios en la rama de la característica (para esto tendrá que usar rebasar o fusionar).

Copiando un rango de confirmaciones de una rama a otra

git cherry-pick <commit-A>..<commit-B> colocará cada confirmación después de A y hasta e incluyendo B encima de la rama actualmente retirada.

git cherry-pick <commit-A>^..<commit-B> colocará el commit A y cada commit hasta e incluyendo B encima de la rama actualmente retirada.

Comprobando si se requiere un pick-cherry

Antes de iniciar el proceso de selección de cerebros, puede verificar si el compromiso que desea seleccionar ya existe en la rama de destino, en cuyo caso no tiene que hacer nada.

git branch --contains <commit> enumera las ramas locales que contienen la confirmación especificada.

git branch -r --contains <commit> también incluye sucursales de seguimiento remoto en la lista.

Encontrar compromisos aún para ser aplicados al upstream

Command git cherry muestra los cambios que aún no han sido seleccionados.

Ejemplo:

git checkout master
git cherry development

... y ver la salida un poco como esto:

+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9

Los compromisos de que estar con + serán los que aún no han sido seleccionados para su development .

Sintaxis:

git cherry [-v] [<upstream> [<head> [<limit>]]]

Opciones:

-v Muestra los temas de confirmación junto a los SHA1s.

<upstream> rama upstream para buscar confirmaciones equivalentes. Por defecto a la rama aguas arriba de HEAD.

<cabeza> rama de trabajo; por defecto a HEAD.

<límite> No reportar confirmaciones hasta (e incluyendo) límite.

Consulte la documentación de git-cherry para más información.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow