Deshacer Intelligent Smart Checkout

Intellij tiene una característica que es muy buena en teoría, llamada Smart Checkout . Esta function se activa cuando se cambian las sucursales y tiene files en la sucursal actual que ha modificado pero no ha comprometido.

En lugar de obligarte a cometer, esconder o archivar tus cambios, los esconde, cambia de twig y luego ejecuta stash pop en la nueva twig.

Supongo que esto es lo que querrías a veces, pero ejecuté esto cuando cambié a la twig incorrecta.

Entonces, ahora mi twig master está llena de cambios que pertenecen a otra twig, algunos files están informando conflictos de fusión, y tengo todo tipo de dolor.

Lo que quiero lograr es:

  1. Elimina limpiamente los cambios de la twig principal.
  2. Moverlos a la twig donde estaba trabajando.

¿Hay alguna forma de hacer esto?

Aquí hay al less una respuesta parcial que funciona si tuvo un conflicto de combinación durante el stash pop . Como mencioné en mi pregunta, la function de Smart Checkout utiliza el alijo para esconder los cambios locales y luego aplicarlos a la nueva sucursal después de que se haya prestado.

La forma en que Intellij hace esto es mediante el uso de stash en la twig en la que se encuentra actualmente, y luego usando stash pop en la twig a la que está cambiando.

Cuando los cambios están escondidos, se colocan en una stack de cambios escondidos, en la parte superior. Luego, cuando se ejecuta stash pop , esos cambios se eliminan de la stack y se aplican.

Al less, en la mayoría de los casos, eso es lo que sucede. Sin embargo, si hay un conflicto de fusión, Intellij le informa de eso y se guarda el alijo. Puede ver la stack de stashes ejecutando:

 git stash list 

Si el alijo que desea aún aparece en la list, lo que puede hacer es simplemente verificar la sucursal en la que estaba originalmente. Restablézcalo, luego stash apply , que es como stash pop , pero no elimina el alijo de la list. Asi que:

 git checkout $original-branch git reset HARD git stash apply 

Entonces, si todo está bien, puedes eliminar el alijo con:

 git stash drop 

Como esta respuesta es bastante difícil y solo cubre una situación, estoy marcando como una wiki de la comunidad. Mejoras bienvenidas.