¿Cómo seleccionar cambios sin compromiso en algunos files en una nueva twig?

Di que tengo twig y twig. En He estado haciendo varios cambios en file1, file2. Pero, también, terminé haciendo refactorizaciones en cosas que aparentemente estaban arregladas, digamos en fileA, fileB.

Ahora me gustaría crear una twig diferente que aísle estos cambios en <my_feature> para tener decir <my_updates> con confirmaciones para solo fileA, fileB.

Actualmente tengo cambios no configurados para commit en file1, file2, fileA y fileB.

He estado leyendo sobre git cherry-pick y git apply pero implica cosas que ya están comprometidas.

Ahora que ninguno de estos cambios está comprometido, no sé si debería comprometerme a esto y a seleccionar una cereza o si hay una mejor manera de manejarlo.

Para asegurarnos de que la image sea clara, visualicemos algo:

Yo queria hacer:

 master ------------------ \--- my_feature ----/ file1 file2 

Pero ahora tengo

 master ------------------ my_feature ----/ file1 file2 fileA fileB 

y quiero fusionar esto (cambios en fileA, fileB) antes de continuar con <my_feature> :

 master ------------------ \--- my_updates ----/ fileA fileB 

Entonces <my_feature> contendrá los cambios en file1, file2.

Podrías git stash , moverte a una nueva sucursal y luego git stash pop . Entonces puede hacer más trabajo o comprometer el resultado.

También puede crear un parche dirigiendo la salida de git diff a un file ( git diff > changes.patch ) o al portapapeles ( git diff | pbcopy para OS X o git diff | xclip -selection clipboard en Ubuntu). Luego puede aplicar ese parche con git apply a cualquier otra sucursal.

Para el logging, este es el set completo de commands que utilicé para que funcione:

Mientras <my_feature> en la twig <my_feature> , guarda el diff en un parche:

 git diff fileA fileB > /tmp/changes.patch 

Oculta los cambios para reutilizarlos más adelante:

 git stash -u 

Crea una nueva twig desde el master con ese parche:

 git checkout master git checkout -b my_updates git patch /tmp/changes.patch git add fileA fileB git commit -m "Updated fileA, fileB because blabla" git push 

Regrese a la twig <my_feature> y recupere los cambios escondidos:

 git checkout my_feature git stash pop 

Deshágase de los cambios en fileA y fileB, ya que ya están en su lugar:

 git checkout fileA fileB