Eu adicionei um arquivo nomeado "file1.txt"
a um repositório Git. Depois disso, eu o comprometi, adicionei alguns diretórios chamados dir1
e dir2
, e os comprometi ao repositório Git.
Agora o repositório atual tem "file1.txt"
, dir1
e dir2
. Como posso excluir "file1.txt"
sem afetar os outros, como dir1
e dir2
?
git rm
é a resposta certa, mas lembre-se de que o arquivo ainda estará lá no histórico. Se você deseja remover um arquivo porque possui informações confidenciais, precisará fazer algo mais drástico. (Mudar a história, especialmente para o conteúdo que você já tenha empurrado, é uma ação drástica, e deve ser evitado, se possível.)Respostas:
Use
git rm
.Se você deseja remover o arquivo do repositório Git e do sistema de arquivos , use:
Mas se você deseja remover o arquivo apenas do repositório Git e não do sistema de arquivos, use:
E para enviar alterações para repo remoto
fonte
git rm file.txt
remove o arquivo do repositório, mas também o exclui do sistema de arquivos local .Para remover o arquivo do repositório e não excluí-lo do sistema de arquivos local, use:
git rm --cached file.txt
A situação exata abaixo é onde eu uso o git para manter o controle de versão no site da minha empresa, mas o diretório "mickey" era uma pasta tmp para compartilhar conteúdo privado com um desenvolvedor de CAD. Quando ele precisava de arquivos ENORMES, criei um diretório privado e desvinculado e enviei os arquivos para ele buscar no navegador. Esquecendo que fiz isso, mais tarde fiz um a
git add -A
partir do diretório base do site. Posteriormente,git status
mostrou os novos arquivos que precisam ser confirmados. Agora eu precisava excluí-los do controle de versão e rastreamento do git ...A amostra de saída abaixo é do que aconteceu comigo, onde eu excluí o
.003
arquivo acidentalmente . Felizmente, não me importo com o que aconteceu com a cópia local.003
, mas alguns dos outros arquivos alterados atualmente são atualizações que acabei de fazer no site e seria épico ter sido excluído no sistema de arquivos local! "Sistema de arquivos local" = o site ativo (não é uma boa prática, mas é realidade) .Update: Essa resposta é obter algum tráfego, então eu pensei que eu ia mencionar minhas outras respostas Git ações um par de grandes recursos: Esta página possui um gráfico que ajuda a desmistificar o Git para mim. O livro "Pro Git" está online e me ajuda muito.
fonte
git commit -m "Just removing file1.txt"
e, se você tiver um repositório remoto, envie o commit com algo parecidogit push origin master
.Primeiro, se você estiver usando
git rm
, especialmente para vários arquivos, considere que qualquer curinga será resolvido pelo shell, não pelogit
comando.Mas, se o seu arquivo já estiver no GitHub, você pode (desde julho de 2013) excluí-lo diretamente da GUI da web!
Então "
git pull
" no seu repositório local, e isso excluirá o arquivo localmente também.O que torna essa resposta uma maneira (indireta) de excluir um arquivo do git repo?
(Sem mencionar que um arquivo no GitHub está em um "repositório git")
(a confirmação refletirá a exclusão desse arquivo):
A última frase significa que o arquivo excluído ainda faz parte do histórico e você pode restaurá-lo com bastante facilidade (mas ainda não através da interface da web do GitHub):
Consulte " Restaurar um arquivo excluído em um repositório Git ".
fonte
Esta é a única opção que funcionou para mim.
Nota: Substitua * .sql pelo seu nome ou tipo de arquivo. Tenha muito cuidado, pois isso passará por todas as confirmações e eliminará esse tipo de arquivo.
EDIT: preste atenção - após este comando, você não poderá empurrar ou puxar - você verá a rejeição da 'história não relacionada', você pode usar 'git push --force -u origin master' para empurrar ou puxar
fonte
git push --force -u origin master
Além disso, se for uma pasta a ser removida e as pastas ou arquivos filhos subsequentes, use:
fonte
Use git rm --cached -r <foldername>
De maneira mais geral,
git help
ajudará com pelo menos perguntas simples como esta:fonte
git help
confuso, mas bom é para as coisas simples :)rm
encena um arquivo para exclusão em vez de removê-lo do índice (embora ainda não faça sentido para noobs).Se você deseja excluir o arquivo do repositório, mas deixe-o no sistema de arquivos (não será rastreado):
Se você deseja excluir o arquivo do repositório e do sistema de arquivos, há duas opções:
Se o arquivo não tiver alterações testadas no índice:
Se o arquivo tiver alterações testadas no índice:
fonte
git rm
somente removerá o arquivo neste ramo a partir de agora, mas ele permanecerá no histórico e o git se lembrará dele.A maneira certa de fazer isso é com
git filter-branch
, como outros já mencionaram aqui. Ele reescreverá todas as confirmações no histórico da ramificação para excluir esse arquivo.Mas, mesmo depois de fazer isso, o git pode se lembrar disso, pois pode haver referências a ele no reflog, controles remotos, tags e outras coisas.
Se você deseja eliminá-lo completamente em uma etapa, eu recomendo que você use
git forget-blob
https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/
É fácil, basta fazer
git forget-blob file1.txt
.Isso remove todas as referências, faz
git filter-branch
e, finalmente, executa o coletor de lixo gitgit gc
para se livrar completamente desse arquivo em seu repositório.fonte
Outra maneira, se você deseja excluir o arquivo da pasta local usando o comando rm e, em seguida, envie as alterações para o servidor remoto.
fonte
Nota: se você deseja excluir o arquivo apenas do git, use abaixo:
Se você deseja excluir também do disco rígido:
Se você deseja remover uma pasta (a pasta pode conter poucos arquivos), remova usando o comando recursivo, como abaixo:
Se você deseja remover uma pasta dentro de outra pasta
Então, você pode
commit
epush
como de costume. No entanto, se você quiser recuperar a pasta excluída, siga este procedimento: é possível recuperar arquivos excluídos do git.Leia mais sobre o documento oficial.
fonte
Para excluir um arquivo específico
Para limpar todos os arquivos não rastreados de um diretório de forma recursiva em captura única
fonte
Se você possui o aplicativo GitHub for Windows, pode excluir um arquivo em 5 etapas fáceis:
fonte
No meu caso, tentei remover o arquivo no github depois de alguns commits, mas salvar no computador
e depois esse arquivo foi ignorado
fonte
Primeiro, remova os arquivos do repositório local.
ou remova arquivos apenas do repositório local, mas do sistema de arquivos
Em segundo lugar, confirmar as alterações no repositório local.
Por fim, atualize / envie as alterações locais para o repositório remoto.
fonte
Tentei muitas das opções sugeridas e nenhuma parecia funcionar (não listarei os vários problemas). O que acabei fazendo, que funcionou, foi simples e intuitivo (para mim) foi:
fonte
Depois de remover o arquivo do repositório,
git rm
você pode usar o BFG Repo-Cleaner para obliterar completa e facilmente o arquivo do histórico do repositório.fonte
Tenho arquivos obj e bin que acidentalmente entraram no repositório que não quero poluir minha lista de 'arquivos alterados'
Depois que notei que eles foram para o controle remoto, eu os ignorei adicionando isso ao
.gitignore
O problema é que eles já estão no controle remoto e, quando são alterados, aparecem como alterados e poluem a lista de arquivos alterados.
Para parar de vê-los, você precisa excluir a pasta inteira do repositório remoto.
Em um prompt de comando:
C:\repos\MyRepo
)C:\repos\MyRepo\SSIS
)git rm -r -f obj
git commit -m "remove obj folder"
Recebi uma mensagem alarmante dizendo que 13 arquivos foram alterados 315222 exclusões
Então, como não queria procurar a linha CMD, entrei no Visual Sstudio e fiz uma sincronização para aplicá-la ao controle remoto.
fonte
Se você precisar remover arquivos de uma extensão determinada (por exemplo, arquivos compilados), faça o seguinte para removê-los todos de uma vez:
fonte
De acordo com a documentação .
git rm --cached giant_file
Quando se trata de dados confidenciais - é melhor não dizer que você removeu o arquivo, mas apenas incluí-lo no último commit conhecido:
0. Alterar última confirmação
Se você deseja excluir o arquivo de todo o histórico do git, de acordo com a documentação , faça o seguinte:
1. Remova-o do seu histórico local
3. Se você precisar remover do controle remoto
4. Se você também precisar removê-lo das liberações de tags:
fonte
No caso de você não arquivar no repositório local, mas no git repo, basta abrir o arquivo no git repo através da interface da web e encontrar o botão Excluir no canto direito da interface. Clique aqui, para exibir a interface Excluir opção
fonte