Eu apaguei alguns arquivos.
Eu não cometi ainda.
Quero redefinir meu espaço de trabalho para recuperar os arquivos.
Eu fiz um git checkout .
.
Mas os arquivos excluídos ainda estão ausentes.
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
#
Por que não git checkout .
redefinir o espaço de trabalho para HEAD
?
git checkout .
teria funcionado bem.Respostas:
A saída informa o que você precisa fazer.
git reset HEAD cc.properties
etc.Isso desestabilizará a operação rm. Depois disso, executar um
git status
novo novamente lhe dirá que você precisa fazer umgit checkout -- cc.properties
para recuperar o arquivo.Atualização: Eu tenho isso no meu arquivo de configuração
que eu costumo usar para desfazer coisas.
fonte
git reset HEAD \*
e entãogit checkout -- .
rm -r ./engines
Opa. Agoragit reset engines; git checkout engines
.Você organizou a exclusão e precisa fazer:
git checkout .
somente faz check-out do índice em que a exclusão já foi preparada.fonte
Apenas faça
git checkout path/to/file-I-want-to-bring-back.txt
fonte
error: pathspec 'file.ext' did not match any file(s) known to git.
git status
diz sobre isso?git checkout HEAD -- file.ext
ajudou a restaurá-lo.Para recuperar todas as exclusões não faseadas de uma só vez, automaticamente, sem especificar cada caminho único:
Para recuperar todas as exclusões em etapas de uma vez, automaticamente, sem especificar cada caminho único:
fonte
git status --long | grep 'deleted:' | awk '{print $2}' | xargs git reset HEAD --
.git ls-files -d | sed -e "s/\(.*\)/'\1'/" | xargs git checkout --
vai funcionar.Como você está fazendo um
git checkout .
, parece que você está tentando restaurar sua ramificação de volta ao último estado de confirmação.Você pode conseguir isso com um
git reset HEAD --hard
Atenção
Isso pode remover todas as suas últimas modificações e desestabilizar suas modificações, por exemplo, você pode perder o trabalho. Ele pode ser o que quiser, mas confira a documentação para ter certeza.
fonte
se você usou
para excluir um arquivo
não funciona, então nesse caso
Deveria trabalhar
fonte
git checkout HEAD^ path/to/filename
trabalhou para mim desde que eu não tinha confirmado o arquivo.Aqui está o comando que me ajudou no meu mac. Tentei algumas das outras soluções, mas elas não funcionaram para mim.
Versão Git no OSX Mavericks
Comando
fonte
fonte
Use
git ls-files
para fazer check-out de arquivos excluídos (-d) ou modificados (-m).consulte Como posso restaurar apenas os arquivos modificados em um checkout do git?
fonte
git ls-files -d | xargs -I{} git checkout "{}"
.Se você deseja restaurar todos os arquivos de uma só vez
Lembre-se de usar o período, porque ele diz ao git para pegar todos os arquivos.
Este comando redefinirá a cabeça e desestabilizará todas as alterações:
Em seguida, execute isso para restaurar todos os arquivos:
Então, fazendo um status git, você obterá:
fonte
Você pode querer ver isso
isso vale para casos em que você usou
antes de cometer alguma coisa.
Você também pode se livrar dos arquivos criados que ainda não foram criados. E você não os quer. Com:
fonte
git checkout -- .
não ajuda a recuperar arquivos apagados e é equivalente ao que o consulente tentou:git checkout .
. A parte que pode trabalhar é aquele que você não copiar:git checkout <file_path>
.Encontrei esta postagem enquanto procurava respostas sobre como cancelar a exclusão de um arquivo que foi excluído no meu diretório de trabalho após uma mesclagem da ramificação de outra pessoa. Nenhuma confirmação ainda foi feita após a mesclagem. Como era uma mesclagem em andamento, não era possível adicioná-lo novamente usando:
Eu tive que fazer outra etapa além da redefinição para trazer o arquivo de volta:
fonte
Se você não confirmou nenhuma alteração, tudo o que você precisa fazer é ocultar essas alterações e você voltará ao último commit em funcionamento.
fonte
se você estiver procurando por um diretório excluído.
fonte
Aqui estão casos diferentes como referência para ajudar outras pessoas:
Se a exclusão não tiver sido confirmada , o comando abaixo restaurará o arquivo excluído na árvore de trabalho.
Você pode obter uma lista de todos os arquivos excluídos na árvore de trabalho usando o comando abaixo.
Se a exclusão foi confirmada , localize a confirmação onde ocorreu e recupere o arquivo dessa confirmação.
Deve dar algo como
c46e81aa403ecb8a0f7a323a358068345
, agora use commit # hereAlgo parecido com isto: $ git checkout c46e81aa403ecb8a0f7a323a358068345 -
Caso esteja procurando o caminho do arquivo para recuperar, o comando a seguir exibirá um resumo de todos os arquivos excluídos.
Se você deseja apenas exibir a lista de arquivos:
fonte
Para mim o que funcionou foi
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 arquivo seja inserido)
Após a execução desse comando, o arquivo restaurado existirá no local original (que precisará ser confirmado)
fonte
git checkout master path/to/the/file.bin
para que você apenas cancele a exclusão desse arquivo sem perder nenhuma outra alteração que possa ter feito. PS: esta deve ser a resposta aceita ...Se você instalou o ToroiseGIT, basta selecionar o item de menu "Reverter ..." para o menu pop-up da pasta pai.
fonte
1. Encontre o commit específico ao qual você deseja reverter usando:
2.Reveja a essa confirmação usando:
Agora sua filial local teria todos os arquivos em particular
fonte
CUIDADO: comprometa qualquer trabalho que você deseja reter primeiro.
Você pode redefinir sua área de trabalho (e recuperar os arquivos excluídos)
fonte
./*
../*
será expandido pelo bash para corresponder a esses arquivos antes de ser enviado ao git.Eu tive o mesmo problema, no entanto, nenhuma das soluções acima funcionou para mim. O que acabei fazendo foi:
- criar um arquivo vazio com o mesmo nome
- comparar este arquivo com o histórico local
- copiar o histórico para o arquivo vazio.
fonte
Eu tive o mesmo problema e nenhuma das respostas aqui que tentei funcionou para mim também. Estou usando o Intellij e fiz check-out de uma nova ramificação
git checkout -b minimalExample
para criar um "exemplo mínimo" na nova ramificação de algum problema, excluindo um monte de arquivos e modificando outros no projeto. Infelizmente, embora eu não tenha confirmado nenhuma das alterações no novo ramo "exemplo mínimo", quando fiz check-out do meu ramo "original" novamente todas as alterações e exclusões do ramo "exemplo mínimo" ocorreram no campo " ramo original "também (ou pelo menos apareceu). De acordo comgit status
os arquivos excluídos foram apenas de ambos os ramos.Felizmente, apesar de a Intellij ter me avisado "a exclusão desses arquivos pode não ser totalmente recuperável", consegui restaurá-los (no ramo de exemplo mínimo do qual eles realmente foram excluídos) clicando com o botão direito do mouse no projeto e selecionando Histórico local > Mostrar histórico (e depois Restaurar no item de histórico mais recente que eu queria). Depois que o Intellij restaurou os arquivos no ramo "exemplo mínimo", forcei o ramo para a origem. Depois, voltei para minha ramificação local "original" e corri
git pull origin minimalExample
para recuperá-la também.fonte