Excluí todo o conteúdo de uma pasta e a pasta está vazia. Eu ainda tinha uma cópia em meu repositório remoto. Mas quando eu fiz um, git pull
ele não colocou de volta os arquivos excluídos, não deveria fazer isso?
Então eu fiz algumas pesquisas e vi que você pode reverter um arquivo fazendo
git checkout <revision> -- <name of file>
Mas isso só funciona em arquivos.
Como posso recuperar todos os arquivos dentro do diretório?
git
git-checkout
json2021
fonte
fonte
git status
lhe dará uma dica sobre quais comandos executarRespostas:
Tudo o que você pode fazer com um arquivo, também pode fazer com uma pasta.
Observe também como localizar e restaurar um arquivo excluído em um repositório Git
Os arquivos foram excluídos da árvore de trabalho, mas ainda não foram confirmados:
Se você ainda não indexou (
git add
) suas alterações, você pode reverter o conteúdo de um diretório:Se a exclusão já estiver indexada, você deve redefini-la primeiro:
Restaure a árvore de trabalho completa (não uma única pasta), mas perca todas as alterações não confirmadas
Quando os arquivos são excluídos em algum commit no passado:
Encontre o último commit que afetou o caminho fornecido. Como o arquivo não está no commit HEAD, este commit deve tê-lo excluído.
Em seguida, verifique a versão no commit antes, usando o
^
símbolo circunflexo ( ):Restaura a árvore de trabalho completa de um commit distante
fonte
git checkout -- path/to/folder/*
não funciona Nota: a questão é como restaurar uma pasta, não um arquivoHow can I retrieve all the files inside the directory
significa o diretório e seus arquivos. Mas o comando surpreendentemente não funciona para mim também. Eu me lembro disso há um ano.git checkout -- path
ougit checkout -- 'path/*'
. No seu exemplo, você deleta com ogit rm
que o OP não parece funcionar. Eu adicionei instruções para esse caso. Obrigado!git checkout "<deleting_commit>^" -- <file_path>
Se você ainda não confirmou suas alterações, pode reverter o conteúdo ou um diretório:
Se quiser reverter todas as alterações, faça:
fonte
git checkout -- removed_directory
não funcionagit checkout -- removed_directory
funcionou para mim, mas já criei esse diretório antes (porcheckout
um dos arquivos nesse diretório). Após a criação, todos os arquivos foram restaurados na pasta por este comando.A única coisa que funcionou para mim foi fazer o checkout do repositório em outra pasta. Suponha que o repositório atual esteja disponível
/home/me/current
.Então eu fiz
Isso cria um clone separado do repo em
/home/me/temp
Agora posso ir
/home/me/temp
e fazer o que quiser. Por exemploAgora posso copiar a pasta de arquivo excluída de volta
E exclua a pasta temporária
Os exemplos de
NÃO FUNCIONA
Outros exemplos como
são destrutivos além de apenas os arquivos excluídos. Quaisquer outras alterações também serão perdidas.
similarmente
vai perder qualquer commit após
some-commit
fonte
A partir do git 2.24.0, há um novo comando git experimental: git restore
fonte
Você pode restaurar arquivos ou pastas com git restore.
Aqui, master ~ 1 reverte sua pasta para a revisão "1" de volta de seu branch master.
Fonte: https://git-scm.com/docs/git-restore
fonte
Se você não especificar um arquivo específico, poderá obter o conteúdo completo de um commit específico. Gostar:
git checkout 264794319e9695ba843cd6
(assumindo que o hash tenha todos os seus arquivos no estado correto).O motivo de
pull
não restaurar arquivos é que o git vê suas exclusões como a alteração mais recente, aplicando-as em cima de tudo o que você está puxando.(Eu recomendo experimentar em um novo branch.)
fonte
para exclusões não confirmadas, é tão simples quanto isto:
git reset HEAD rel / path / to / deleted / directory / *
fonte