git recuperar arquivo deletado onde nenhum commit foi feito após a delete
eu fiz um git checkout .
.
mas os ficheiros apagados ainda estão em falta.
e git status
mostra:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: cc.properties
# deleted: store/README
# deleted: store/cc.properties
#
porque é que git checkout .
não repõe o espaço de trabalho em HEAD
?
20 answers
A saída diz-lhe o que precisa de fazer. git reset HEAD cc.properties
etc.
git checkout -- cc.properties
para obter o arquivo de volta.
Actualizar: Tenho isto no meu ficheiro de configuração.
$ git config alias.unstage
reset HEAD
Que costumo usar para soltar coisas.
git checkout HEAD cc.properties store/README store/cc.properties
git checkout .
apenas verifica a partir do índice onde a supressão já foi encenada.
git checkout path/to/file-I-want-to-bring-back.txt
Para recuperar todas as supressões não realizadas de uma só vez, automaticamente, sem especificar cada caminho:
git ls-files -d | xargs git checkout --
Para recuperar todos encenados de uma só vez, automaticamente, sem especificar cada caminho:
git status | grep 'deleted:' | awk '{print $2}' | xargs git checkout --
Já que estás a fazer um {[[0]}, parece que estás a tentar restaurar o teu ramo de volta ao último estado de commit.
Você pode conseguir isso com um git reset HEAD --hard
Aviso
Fazer isto pode remover todas as suas últimas modificações e desatar as suas modificações, por exemplo, você pode perder o trabalho. Pode ser o que quiser, mas veja os documentos para ter a certeza.
Se usou
git rm filename
Para apagar um ficheiro, então
git checkout path/to/filename
Não funciona, então nesse caso
git checkout HEAD^ path/to/filename
Deve funcionar
Versão Git do OSX Mavericks
mac-pro:main chris$ git version
git version 1.8.5.2 (Apple Git-48)
Comando
git checkout HEAD -- path/to/file/file.cc
git checkout HEAD -- client/src/pp_web/index.cljs
Se quiser restaurar todos os ficheiros de uma vez
Lembre-se de usar o período Porque ele diz ao git para pegar todos os arquivos.
Este comando irá reiniciar a cabeça e libertar todas as alterações:
$ git reset HEAD .
Então execute isso para restaurar todos os arquivos:
$ git checkout .
Então, fazendo um git status, você terá:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Você pode querer ver isto
Isto aplica-se aos casos em que usaste
git checkout -- .
Antes de cometeres alguma coisa.
Você também pode querer se livrar de arquivos criados que ainda não foram criados. E tu não os queres. Com:
git reset -- .
Encontrou esta publicação ao procurar respostas sobre como remover um ficheiro que foi apagado na minha pasta de trabalho após uma junção do ramo de outro. Ainda não foi feita nenhuma persistência após a junção. Uma vez que era uma fusão em andamento, eu não poderia simplesmente adicioná-lo de volta usando:
$ git reset <commitid#-where-file.cpp-existed> file.cpp
Tive de dar mais um passo para além da reinicialização para trazer o ficheiro de volta:
$ git checkout -- file.cpp
Utilizar git ls-files
para obter ficheiros apagados(-d) ou modificados (- m).
git checkout $(git ls-files -d)
Ver Como posso restaurar apenas os ficheiros modificados numa saída do git?
Se não tiver cometido quaisquer alterações, tudo o que tem de fazer é guardar essas alterações e voltará ao último commit a funcionar.
git stash
git stash clear
git clean
Se está à procura de uma pasta apagada.
git checkout ./pathToDir/*
Se instalou o ToroiseGIT, basta seleccionar " reverter..."item do menu de contexto da pasta-mãe.
git checkout {SHA1 of commit with version to restore} "{path to file to restore}"
Por exemplo git checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"
(executado no ramo em que queremos que o ficheiro entre)
Depois desse comando ser executado, o ficheiro restaurado existirá no local original (que terá de ser enviado)
git checkout ./*
Está bem.
- compare este ficheiro com o seu histórico local
- copiar o histórico para o ficheiro vazio.
Também apaguei todos os meus ficheiros por acidente e repus o seguinte comando:
$ git config alias.unstage
$ git checkout HEAD^ *
1.Encontre a persistência em particular à qual deseja reverter usando:
git log
This command will give you a list of commits done by you .
2.Reverter para essa persistência usando:
git revert <commit id>
Agora o seu ramo local teria todos os ficheiros em particular