Git ¿Puedo hacer un cambio por separado en el mismo file en diferentes twigs?

Escenario: estoy trabajando en un file: foo.html. He hecho muchos cambios importantes, pero no estoy listo para comprometerme y presionar en vivo. Un cliente entra y dice: "Oye, necesitamos un cambio urgente de text a foo.html". Normalmente, creo una copy de foo.html (foo-copy.html) no en git, deshago todos mis cambios a foo.html y realizo el nuevo cambio urgente. Después de confirmar la corrección urgente, copio mis cambios almacenados en foo-copy.html nuevamente en foo.html. pwhew!

¿Hay alguna manera más fácil de hacer esto en Git? Al igual que el estado actual de stash de foo.html en una twig para que los cambios actuales no se vean en mi espacio de trabajo, abra otra twig para realizar cambios urgentes en foo.html, confirme y vuelva a mostrar el file oculto en la primera twig.

Espero que esto tenga sentido. Y gracias por cualquier consejo.

Si su versión de Git es de al less 2.6 (la function entró en 2.5 pero hubo correcciones de errores bastante importantes de inmediato, y luego menores desde 2.6), le recomiendo usar la function Git Worktree, con git worktree add :

 $ git clone ... somerepo $ cd somerepo $ git checkout -b newfeature develop ... hack away for a while ... 

En este punto, obtienes una interrupción. En lugar de tratar de save todo, o hacer un nuevo clon (que también funciona), ahora puede hacer esto:

 $ git worktree add -b quickfix ../temptree master 

Ahora tiene, en ../temptree (al lado de somerepo ), un segundo tree de trabajo en un nuevo quickfix twig que se bifurca desde el master . Su tree de trabajo existente, en el que se encuentra ahora mismo, no ha sido perturbado y permanece en su newfeature twig.

Puede hacer cualquier trabajo que desee en el nuevo directory. Tiene su propia CABEZA y su propio índice. La restricción especial es que no puede estar en la misma twig que su repository "principal", ni su repository principal puede cambiar a su twig (todos los campos de trabajo agregados deben estar en sus propias twigs separadas).

Cuando haya terminado con un tree de trabajo agregado, simplemente elimínelo.