Guardé algunos cambios locales antes de hacer una fusión complicada, hice la fusión, y luego olvidé estúpidamente antes de ejecutar git stash pop. El pop creó algunos problemas (llamadas a métodos incorrectos en una gran base de código) que están resultando difíciles de rastrear. Corrí git stash show, así que al menos sé qué archivos se cambiaron. Si nada más, supongo que esta es una lección para comprometerse más.
Mi pregunta: ¿es posible deshacer el stash pop sin deshacer también la fusión?

git stash popsin comprometerte primero. ¿Qué hiciste para lograr eso?git stash popdespués de organizar los cambios (aunque no me comprometí) con la versión 2.25.0.windows.1 de gitstash pop/applyantes de realizar una confirmación, puede disparargit fsck --lost-found. Este comando iterará a través de los blobs colgantes (archivos reales para aquellos que no están familiarizados con la terminología de git) que se organizaron pero no se comprometieron en ningún lugar (por lo tanto, colgando), y los colocará en el directorio .git / lost-found / , donde puedegit showverlos si estos son los archivos que estás buscando.Respuestas:
Intenta usar ¿Cómo recuperar un alijo caído en Git? para encontrar el alijo que metiste. Creo que siempre hay dos confirmaciones para un alijo, ya que conserva el índice y la copia de trabajo (a menudo la confirmación del índice estará vacía). Luego
git show, para ver la diferencia y utilizarpatch -Rpara no aplicarlos.fuente
git fsck --no-reflog | awk '/dangling commit/ {print $3}'(desde el enlace), y solo encontré manualmente el problema de esa diferencia. ¡Gracias!git diff -p ${STACH_SHA1}~1 ${STASH_SHA1} | patch -R -p1:; Intenté congit showlo sugerido, pero su salida no fue buena para el parche; También tuve que proporcionar la-p1opción de parchear para quitar el elementoa/..yb/..que segit diffcoloca delante de los archivos, de lo contrario no resolvería las rutas desde la raíz del repositorio. SUGERENCIA: tenga cuidado y cometa el desastre en una rama separada antes de jugar con el parche.stash popystash pushactivará una confirmación que guardaría los cambios en el índice y el directorio de trabajo, ¿verdad?De
git stash --helpEsto me ayudó mejor que la respuesta aceptada con el mismo escenario.
fuente
Si su fusión no fuera demasiado complicada, otra opción sería:
Después de eso, solo le quedan los cambios del alijo que dejó caer demasiado pronto.
fuente