Presta atención porque en este tutorial vas a hallar la respuesta que buscas.Este tutorial fue aprobado por nuestros expertos para asegurar la calidad y exactitud de nuestro contenido.
Solución:
Como ya tiene una referencia a un objeto de árbol colgante, está en camino. Lo siguiente debería funcionar: primero recupere el árbol colgante en el índice de Git:
git read-tree bfe11a30d57a0233d3b0c840a3b66f6421987304
A continuación, actualice su directorio de trabajo desde el índice ahora recuperado:
git checkout-index -a
Desde que eres capaz de correr git cat-file -p
en el objeto del árbol que cuelga, debería poder recuperarlo. Hay muchas formas de hacerlo, describiré 2 en las que puedo pensar rápidamente:
-
Cree una nueva confirmación para incorporar los archivos en el árbol colgante. Esta confirmación no tendrá padre.
echo "A commit to recover the dangling tree." | git commit-tree bfe11a30d57a0233d3b0c840a3b66f6421987304 # Output:
La nueva confirmación debe contener el árbol de trabajo del árbol colgante que acaba de descubrir. El resultado del comando anterior debería mostrar la nueva confirmación SHA1 que se creó.
Para cambiar su árbol de trabajo actual a este compromiso:
git checkout
Ahora debería poder ver todos los archivos y los contenidos que se enumeraron en la confirmación del árbol colgante. Puedes navegar, hacer una copia de seguridad de los archivos, hacer lo que quieras;)
-
Enfoque alternativo:
Si desea obtener los cambios además de su compromiso actual, este enfoque podría ser útil.
Lea el contenido del árbol en el índice de git (es decir, en el área de preparación para este caso).
git read-tree bfe11a30d57a0233d3b0c840a3b66f6421987304
Ahora confirme los cambios en el área de preparación en la parte superior de la rama actualmente desprotegida:
git commit -m "Recover the lost files."
Y para el futuro:
-
Siempre confirme sus cambios, es mucho más fácil llegar a ellos (usando reflogs) incluso si el compromiso se cuelga en el futuro. En caso de duda, adelante con un
git commit
siempre puede modificar la confirmación, realizar cambios, reescribir el historial, etc. Especialmente antes de ejecutar comandos comogit pull
ogit push
debe confirmar sus cambios para que no se pierdan. -
No corras
git init
dos veces en un repositorio, aunquegit
es lo suficientemente inteligente como para saber que el repositorio ya se ha inicializado e intenta NO sobrescribir sus cambios.
Te invitamos a confirmar nuestra tarea mostrando un comentario o puntuándolo te damos las gracias.