¿Confirma la selección de cambios a otra twig y luego reanuda el trabajo en la twig actual?

Esto sucede a menudo en mi flujo de trabajo: estoy trabajando en una function en una twig separada, y mientras hago esto, me encontraré con cosas pequeñas que deben corregirse, pero que vienen de más arriba en el marco o el layout del sitio, por ejemplo.

Quiero volver a la twig de desarrollo principal y confirmar los cambios desde los files de selección allí, luego volver a una twig de características y volver a establecer la base para poder continuar allí sin los ajustes / correcciones de errores no relacionadas.

Estoy usando git stash y git stash pop para hacer esto, pero estoy recibiendo muchos conflictos de un grupo de files que modifiqué pero de todos modos no necesito comprometerme con la twig padre.

¿Hay alguna otra manera de evitar conflictos o de alguna manera save el estado actual, y solo seleccionar ciertos cambios en el tree de trabajo a otra twig para el compromiso? (algo así como git-stash-cherry-pick ;-))

  1. Confirme los cambios que desee en el master en su twig actual.
  2. Oculta tus cambios restantes
  3. Cambie a la twig master y use git cherry-pick para mover los cambios al master
  4. Regresa a tu twig de plumas y rebase (opcional)
  5. Desbloquear los cambios de la function original

Usualmente lo hago al revés. Continúo trabajando en mi twig de características hasta que esté listo para hacer un commit allí. Tan pronto como lo hago, agrego todos los cambios que pertenecen a la nueva confirmación para la twig al índice, pero no los que pertenecen al maestro. git add -p et.al lo hace realmente fácil. Una vez que todos los cambios relevantes en el índice, me comprometo con la sucursal. Todos los restantes cambios sucios pertenecen al maestro y se llevarán a la perfección una vez que cambie a eso para poder enviarlo allí.

Intenta volver a la twig master con la opción --merge . Tratará de fusionarse en tres direcciones entre las dos twigs. La documentation de git tiene un buen ejemplo:

 2. After working in the wrong branch, switching to the correct branch would be done using: $ git checkout mytopic However, your "wrong" branch and correct "mytopic" branch may differ in files that you have modified locally, in which case the above checkout would fail like this: $ git checkout mytopic error: You have local changes to 'frotz'; not switching branches. You can give the -m flag to the command, which would try a three-way merge: $ git checkout -m mytopic Auto-merging frotz After this three-way merge, the local modifications are not registenetworking in your index file, so git diff would show you what changes you made since the tip of the new branch. 

En MacOS, GitX hace que sea muy fácil hacer el tipo de compromiso selectivo que describe rafl, por lo que es una buena forma de abordarlo si ese es el entorno en el que te encuentras.

También es posible / práctico realizar cambios de twig-y cambios de maestro-y en commits separados, luego usar git format-patch para exportar los commit de la twig como files y git am para incorporarlos al maestro.

El peligro aquí es si los files alnetworkingedor de los cambios son demasiado diferentes, en cuyo caso puede haber conflictos al tirar de las confirmaciones al maestro.

¿Qué tal crear una twig temporal?

Algo como:

 - oh crap need to do somethning else now - git checkout -b ResumeLater - git add . - git commit - git checkout ImportantStuff - .... - git checkout ResumeLater