Git: cómo deshacer una extracción de archivos no preparados que descarta los cambios locales

7 minutos de lectura

avatar de usuario
Michael Wallasch

Accidentalmente descarto mis cambios en archivos en mi árbol de trabajo local a través de git checkout. Los archivos no están preparados en este momento. ¿Es posible “deshacer” este pago?

  • No, no podemos, pero si está usando Eclipse, podemos verificar Equipo–>Historial local

    – USM

    5 de febrero de 2019 a las 5:33

Si está utilizando un IDE “profesional”, es muy probable que pueda restaurar archivos desde un Historial local. En Rubymine, por ejemplo, puede hacer clic derecho en los archivos y ver un historial de cambios independiente de los cambios de git, me salvó algunas veces ahora ^^

  • Para su información, esta característica está disponible en toda la familia JetBrains de IDE “profesionales”: Pycharm, IDEA, PHPStorm, Webstorm. Salvé mi bakken hoy. ¡Gracias, Cristóbal!

    – Robo B

    3 de diciembre de 2012 a las 22:08

  • tengo que agradecerte Uso WebStorm y me olvidé por completo de esa función, aunque la uso con bastante frecuencia. ¡Estaba tan atrapado por la pérdida de código que no pensé en ello!

    – Tyson Phalp

    5 de abril de 2013 a las 3:16

  • En eclipse, puede hacer clic derecho en el archivo -> comparar con -> historial local

    – Maragües

    31 de mayo de 2013 a las 15:05

  • magnífico. Sublime2 deshacer también revirtió los cambios realizados por git checkout accidental en el disco.

    – caray

    10 de diciembre de 2013 a las 15:03

  • Si alguien encuentra que este hilo ha destruido algún trabajo en XCode, hay una manera de obtener el historial de Autoguardado. XCode en sí no tiene una entrada de menú para ver el historial de Autoguardado, pero lo almacena. Si abre los archivos en cuestión en TextEdit, puede revertir y revisar el historial de Autoguardado en Archivo > Revertir.

    – qingu

    28 de noviembre de 2014 a las 16:16

avatar de usuario
VonC

Creo que si un archivo se modifica pero aún no se agrega (escenifica), es puramente “privado”.
Lo que significa que GIT no puede restaurarlo si se sobrescribe con el índice o la versión HEAD (a menos que tenga una copia de su trabajo actual en alguna parte).

Un contenido “privado” es uno solo visible en su directorio actual, pero no registrado de ninguna manera en Git.

Nota: Como se explica en otras respuestas, puede recuperar sus cambios si usa un IDE (con historial local) o tiene un editor abierto (ctrl + Z).

  • Entiendo que git no puede deshacer los cambios en un archivo ‘privado’. Sin embargo, si el archivo fue modificado por git (por ejemplo, a través de git checkout --), espero que sea capaz de deshacer esa operación, tal vez a través de la reflog. ¿Es esa una expectativa equivocada?

    – Ciprian Tomoiaga

    27/11/2016 a las 22:30

  • @CiprianTomoiaga reflog es para el pasado sin referencia se compromete Si lo que desea restaurar no se comprometió (o preparó), reflog no lo ayudará.

    – VoC

    27 de noviembre de 2016 a las 22:32

  • @CiprianTomoiaga para cualquier tipo de contenido privado (aún no agregado), confiaría únicamente en su editor o función IDE. Ejemplo de eclipse: ayuda.eclipse.org/neon/…

    – VoC

    27 de noviembre de 2016 a las 22:33

  • ¡Guau! Increíble. Necesitaba revisar un archivo, así que quise escribir git checkout folders/subfolders/file pero presionó enter por accidente después de llegar a folder y perdí todo mi trabajo. / está a 1 cm de entrar en mi teclado y cambio a menudo entre máquinas con diferentes diseños de teclado, por lo que a menudo hay 10-15 minutos para que mis dedos se acostumbren a nuevas posiciones. Difícil de creer en 2018 que git desecha archivos a pesar de que dice en el libro de git que git hace todo lo posible para no perder el trabajo.

    – gman

    4 de julio de 2018 a las 5:47

  • @gman, ¿la respuesta a continuación sobre el “historial local” proporcionada por un IDE lo ayuda a recuperar su trabajo?

    – VoC

    4 de julio de 2018 a las 6:02

avatar de usuario
romano-romano

Si está trabajando en un editor como Sublime Text y tiene el archivo en cuestión aún abierto, puede presionar ctrl+z y volverá al estado que tenía antes de git checkout.

  • Esta respuesta me salvó el día. ¡Muchas gracias!

    – feyyaz

    13 de noviembre de 2016 a las 10:36

  • Me topé con esta solución por accidente hace un momento y estaba a punto de publicar una nueva respuesta. Parece que Sublime captura a Git cambiando el estado del archivo en su historial de modificación de archivos.

    – Timmah

    9 de junio de 2017 a las 7:07

  • Trabajó para mí en Ecipse.

    – Anomalía

    17/07/2018 a las 19:25

  • Trabajó para Visual Studio Code también

    – intotecho

    9 de septiembre de 2018 a las 11:59

Lamentablemente, sus cambios se han perdido. Sus modificaciones privadas simplemente se sobrescriben. a menos que lo hicieras git stash antes de hacer el pago…

Tómalo desde el lado positivo: ahora puedes implementar las cosas aún mejor 😉

avatar de usuario
benjohn

desarrollando en OS X? Utilizando ¿Xcode? ¡Es probable que tengas suerte!

Como se describe en un comentario de qungu, OS X mantiene un historial de versiones de archivos guardado automáticamente, incluso si no estás usando la máquina del tiempo.

Por lo tanto, si ha arrasado con sus cambios locales no organizados con un descuido git checkout .así es como puedes probablemente recuperar todo su trabajo.

Si alguien encuentra que este hilo ha destruido algún trabajo en XCode, hay una manera de obtener el historial de Autoguardado. XCode en sí no tiene una entrada de menú para ver el historial de Autoguardado, pero lo almacena. Si abre los archivos en cuestión en TextEdit, puede revertir y revisar el historial de Autoguardado en Archivo > Revertir.

Lo cual es increíble, y ayer me recuperé sobre un día de trabajo.


Podrías preguntar, “¿Por qué la interfaz de usuario de línea de comandos de git, el principal VCS utilizado para la ingeniería de software en 2016 2017 2018 2019 2020, ¿al menos hacer una copia de seguridad de los archivos antes de simplemente eliminarlos? Como, ya sabes, herramientas de software bien escritas durante las últimas tres décadas”.

O tal vez te preguntes, “¿Por qué se puede acceder a esta increíble función de historial de archivos en TextEdit pero no en Xcode donde realmente la necesito?”

… y ambos, creo, le dirán mucho sobre nuestra industria. O tal vez vayas y arregles esas herramientas. Lo cual sería genial.

  • Puedo confirmar que esto funciona. ¡Esto me ahorró horas de trabajo!

    –Bruno Rocha

    5 de enero de 2018 a las 15:15


  • no funcionó para mí porque el archivo en cuestión era el Model desafortunadamente

    – Siempay

    25 de enero de 2018 a las 16:46

  • @brahimm el modelo?

    – Benjohn

    25 de enero de 2018 a las 18:26

  • Esto me acaba de ahorrar una tonelada de angustia. Muchas gracias.

    – rana cuadrada

    19 de abril de 2018 a las 10:49

  • Muy interesante: hice clic derecho en mi archivo fuente y miré el menú “Abrir con”. Tanto TextEdit 1.14 como TextEdit 1.6 estaban allí como opciones. Solo TextEdit 1.14 tenía la opción de volver a revisiones anteriores. La interfaz de usuario era muy agradable, al igual que TimeMachine.

    – pan de molde

    17/03/2019 a las 21:55

avatar de usuario
marcin szymczak

Consulta el historial local en tu IDE.

  • Puedo confirmar que esto funciona. ¡Esto me ahorró horas de trabajo!

    –Bruno Rocha

    5 de enero de 2018 a las 15:15


  • no funcionó para mí porque el archivo en cuestión era el Model desafortunadamente

    – Siempay

    25 de enero de 2018 a las 16:46

  • @brahimm el modelo?

    – Benjohn

    25 de enero de 2018 a las 18:26

  • Esto me acaba de ahorrar una tonelada de angustia. Muchas gracias.

    – rana cuadrada

    19 de abril de 2018 a las 10:49

  • Muy interesante: hice clic derecho en mi archivo fuente y miré el menú “Abrir con”. Tanto TextEdit 1.14 como TextEdit 1.6 estaban allí como opciones. Solo TextEdit 1.14 tenía la opción de volver a revisiones anteriores. La interfaz de usuario era muy agradable, al igual que TimeMachine.

    – pan de molde

    17/03/2019 a las 21:55

avatar de usuario
ishab acharya

En VSCODE ctrl+z (deshacer) funcionó para mí

Hice git checkout .en vez de git add . y todos los cambios de mi archivo se perdieron.

Pero ahora usando command + z en mi mac, recuperé los cambios y me guardó un tono de trabajo.

  • ¿hay alguna otra forma?

    – Abdul Manán

    2 de marzo de 2020 a las 14:30

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad