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 pop
sin comprometerte primero. ¿Qué hiciste para lograr eso?git stash pop
después de organizar los cambios (aunque no me comprometí) con la versión 2.25.0.windows.1 de gitstash pop/apply
antes 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 show
verlos 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 -R
para 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 show
lo sugerido, pero su salida no fue buena para el parche; También tuve que proporcionar la-p1
opción de parchear para quitar el elementoa/..
yb/..
que segit diff
coloca 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 pop
ystash push
activará una confirmación que guardaría los cambios en el índice y el directorio de trabajo, ¿verdad?De
git stash --help
Esto 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