unstash stash limpiar from and git git-stash

limpiar - Deshacer el pop accidental de git stash



limpiar stash git (3)

De git stash --help

Recovering stashes that were cleared/dropped erroneously If you mistakenly drop or clear stashes, they cannot be recovered through the normal safety mechanisms. However, you can try the following incantation to get a list of stashes that are still in your repository, but not reachable any more: git fsck --unreachable | grep commit | cut -d/ -f3 | xargs git log --merges --no-walk --grep=WIP

Esto me ayudó mejor que la respuesta aceptada con el mismo escenario.

Guardé algunos cambios locales antes de hacer una fusión complicada, hice la fusión, luego olvidé estúpidamente comprometerme antes de ejecutar git stash pop . El pop creó algunos problemas (llamadas de método incorrecto en una gran base de código) que están resultando difíciles de rastrear. Ejecuté git stash show , así que al menos sé qué archivos se cambiaron. Si nada más, supongo que esta es una lección para cometer más.

Mi pregunta: ¿es posible deshacer el stash pop sin deshacer la fusión?


Intenta usar ¿Cómo recuperar un alijo arrojado en Git? para encontrar el escondite que sacaste Creo que siempre hay dos confirmaciones para un alijo, ya que conserva el índice y la copia de trabajo (por lo tanto, la confirmación del índice estará vacía). Entonces git show que vean el diff y usa el patch -R para desaplicarlos.


Si su fusión no fue demasiado complicada, otra opción sería:

  1. Mueva todos los cambios, incluidos los cambios de combinación, a los escondites usando "git stash"
  2. Ejecute la fusión nuevamente y confirme sus cambios (sin los cambios del alijo arrojado)
  3. Ejecute un "git stash pop" que debería ignorar todos los cambios de su combinación anterior ya que los archivos son idénticos ahora.

Después de eso, solo te quedan los cambios del alijo que dejaste caer demasiado pronto.