Git – ¿Cómo aplicar selectivamente los cambios de una twig a otra?

¿Es posible aplicar cambios selectivamente de una twig a otra con Git?

Más específicamente, utilizo una twig de desarrollo público para GitHub y una twig master privada para la implementación. Cuando se realizan cambios en una twig, deberán aplicarse a la otra, pero algunas líneas de código deben permanecer diferentes. En mi caso, son unas pocas classs de css y un feed.

Soy nuevo en Git pero he hecho mi investigación:

  • git merge --no-commit --no-ff se puede usar seguido de un git mergetool para elegir lo que quiero en caso de conflicto. El problema es que solo funciona para conflictos. Git no puede combinarse automáticamente, por lo que lo que quiero ser diferente se reemplaza antes de que tenga la oportunidad de usar mi herramienta de mezcla.

  • git difftool --cached es útil ya que me permite ver las diferencias, pero necesito copyr lo que quiero save desde allí y replacelo manualmente con un editor de text, ya que no puedo simplemente elegir y save como puedo con mergetool.

  • git cherry-pick parece aplicar un compromiso específico a otro, pero lo que deseo mantener diferente puede estar disperso en diferentes commits, y estos commits pueden no solo include lo que quiero que sea diferente. No puedo ver que esto funcione a less que gane millones de compromisos que me volverían loco.

También para ser claro, no quiero que una twig se convierta en otra , lo que parece ser el caso con una fusión. Quiero dos twigs separadas con sus respectivas diferencias y aplicar cambios de una a la otra.

¿Hay un mejor flujo de trabajo que me permita mantener una versión de desarrollo y una implementación al aplicar sus cambios y mantener algunas diferencias? No me importa usar repositorys separados o diferentes herramientas si conduce a una solución.

No creo que haya una manera de elegir partes de una confirmación del mismo file. Yo diría que necesitas volver a factorizar tu código para mover esas partes en diferentes files.

Por cierto, si quieres tomar algunos files de un commit, puedes usar cherry-pick con una combinación de otros commands como se explica aquí .

También me enteré sobre parches:

Para crear el parche: git diff dev > master.patch

Para aplicarlo: patch < master.patch