Perdi todas as minhas modificações faseadas, mas não confirmadas, após o comando git revert --abort

Eu acho que eu errei totalmente.

Estou trabalhando em um projeto há 2 dias e estava tentando o Magit no emacs confirmar o projeto, mas continuava voltando à área de preparação sem concluir a confirmação.

Para encurtar a história, saí do emacs e estava de volta à linha de comando e estava tudo bem com os arquivos, masgit status disse que eu deveria fazer umagit revert --abort ou alguma outra opção que não me lembro agora.

Bem,git revert --abort parecia bom, já que eu queria abortar o que o git estava fazendo e ficar com meus arquivos, mas na verdade levou todos os meus arquivos para a última confirmação.

Perdi horas e horas de trabalho. Existe alguma maneira de voltar ao estado antes que este comando tenha sido emitido?

Meu reflit git é:

5fba267 HEAD@{0}: commit: Clones the spacemacs repo needed for emacs
2c9ced3 HEAD@{1}: commit: Major changes to emacs configuration
d38f9db HEAD@{2}: commit: add initial emacs configuration and vimwiki
e0e28d0 HEAD@{3}: commit: Vim whitespace showing modifications

O trabalho que fiz foi depois disso 5fba267 HEAD @ {0}

EDITAR com resposta: Usando a ajuda inestimável decodeWizard Eu consegui fazer isso no final.

Usando odangling blob não funcionou muito porque quase não havia arquivos lá. Isso pode ocorrer porque, ao tentar resolvê-lo, mudei um dos arquivos de volta para o último check-out e o git excluiu os outros arquivos do material pendente.

Porém, todas as informações necessárias estão realmente nodangling commit parte.

Então aqui está o que eu fiz com a ajuda decodeWizard

Primeiro,copie o diretório do repositório na íntegra e só funciona a partir daí.

Em seguida, execute o comando git:

git fsck --full

Ele gera algo como:

Checking object directories: 100% (256/256), done.
dangling blob 0c8676d28b6b063592493bce281530fb7098a41c
dangling blob 5040b2db1a895ea4aa69c993e0df7cd48823eaec
dangling blob 5ffc6f27406506a01aa13e9b773b574840cef7ac
dangling blob 676efa400477c8d92787a39978f73114f39e0f89
dangling commit 8a44f14eb0821859c0e1cdf0d81038c8431a1007
dangling commit 968e27b0d49b899ab2d43a964b561e4dfd2aa41f
dangling commit 9f5e56caa8b904d93acd43b05f3817ff975a0423

Agora, mostrando odangling commit usando o SHA:

git show - p 8a44f14eb0821859c0e1cdf0d81038c8431a1007

A saída será realmente o diff git para esseencenado, mas nunca comprometido alterar:

commit 8a44f14eb0821859c0e1cdf0d81038c8431a1007
Author: Me <[email protected]>
Date:   Sun Jan 3 02:07:10 2016 +0000

    oO

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ec6eec8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/#bootstrap.sh#
+/emacs.d/#init.el#
+*~
diff --git a/bootstrap.sh b/bootstrap.sh

O que você precisa fazer para verificar oDate e veja aquele que combina com você (na verdade, eles são do mesmo período para mim).

Depois disso, você apenas precisa emitir o comando:git checkout 8a44f14eb0821859c0e1cdf0d81038c8431a1007

E você terá todos os seus arquivos adicionados para confirmar, mas que você nunca confirmou.

O único problema que encontrei foi que, depois disso, você ficará com ogit status:

HEAD detached at 8a44f14 
nothing to commit, working directory clean

Copiei todos os arquivos alterados de volta para o repositório original e tudo estava bem.

questionAnswers(1)

yourAnswerToTheQuestion