Eu cometi e enviei algum diretório para o github. Depois disso, alterei o .gitignore
arquivo adicionando um diretório que deveria ser ignorado. Tudo funciona bem, mas o diretório (agora ignorado) permanece no github.
Como excluo esse diretório do github e do histórico do repositório?
Respostas:
As regras do seu
.gitignore
arquivo se aplicam apenas a arquivos não rastreados. Como os arquivos nesse diretório já foram confirmados em seu repositório, você deve desestabilizá-los, criar uma confirmação e enviar por push para o GitHub:Você não pode excluir o arquivo do seu histórico sem reescrever o histórico do seu repositório - você não deve fazer isso se mais alguém estiver trabalhando com o seu repositório ou se estiver usando-o em vários computadores. Se você ainda deseja fazer isso, pode
git filter-branch
reescrever a história - há um guia útil para isso aqui .Além disso, observe que a saída de
git rm -r --cached some-directory
será algo como:O
rm
feedback é do git sobre o repositório; os arquivos ainda estão no diretório de trabalho.fonte
-r
e--cached
. Obrigado.-r
significa recursivo, necessário se você estiver criando diretórios inteiros.--cached
substitui o comportamento normal do git de excluí-los do diretório de trabalho e preparar a exclusão para confirmação, e faz com que o git opere apenas na área de preparação pronta para confirmação. É assim que você diz ao git que deseja manter suas cópias locais dos arquivos.git reset name_of_file
para o que está descrito acima para o trabalhoEu faço isso:
O que removerá todos os arquivos / pastas que estão no seu git ignorados, economizando que você precise escolher cada um manualmente
Isso parece ter parado de funcionar para mim, agora:
fonte
foreach ($i in iex 'git ls-files -i --exclude-from=.gitignore') { git rm --cached $i }
De acordo com minha resposta aqui: Como remover um diretório do repositório git?
Para remover a pasta / diretório apenas do repositório git e não do local, tente 3 etapas simples.
Etapas para remover o diretório
Etapas para ignorar essa pasta nas próximas confirmações
O arquivo .gitignore ficará assim
fonte
A primeira resposta de Blundell não funcionou para mim. No entanto, me mostrou o caminho certo. Eu fiz a mesma coisa assim:
Aconselho que você verifique primeiro os arquivos a serem excluídos executando a instrução abaixo:
Eu estava usando um arquivo .gitignore padrão para o visual studio e notei que ele estava removendo todas as pastas de log e bin do projeto, o que não era minha ação pretendida.
fonte
Nota: Esta solução funciona apenas com a GUI do Github Desktop .
Ao usar a GUI do Github Desktop , é muito simples.
Mova a pasta para outro local (para fora da pasta do projeto) temporariamente.
Edite seu
.gitignore
arquivo e remova a entrada da pasta que seria remover o repositório principal na página do github.Confirme e sincronize a pasta do projeto.
Mover novamente a pasta para a pasta do projeto
Reedite o
.gitignore
arquivo.Isso é tudo.
fonte
A resposta de Blundell deve funcionar, mas por algum motivo bizarro, isso não aconteceu comigo. Eu tive que canalizar primeiro os nomes dos arquivos gerados pelo primeiro comando em um arquivo e depois percorrer o arquivo e excluí-lo um por um.
fonte
Se você também precisar limpar os arquivos recém-ignorados do histórico de consolidação da filial ou se não desejar que os arquivos recém-ignorados sejam excluídos de futuras tentativas , consulte esta resposta .
fonte
Se você estiver trabalhando no PowerShell, tente o seguinte como um único comando.
Então
git push --force --all
,.Documentação: https://git-scm.com/docs/git-filter-branch
fonte
git filter-branch
diferença entre usar e usargit rm
? Eu estava originalmente pensando que tinha que usar uma versão,git filter-branch
mas a maioria dos comentários aqui recomenda o usogit rm
. Pelo que entendi,git rm
apenas o remove do diretório e índice de trabalho atuais. Mas se seu múltiplo adicionado foi confirmado antes, ele ainda estará no repositório.git rm
removerá o arquivo da confirmação mais recente no futuro.git filter-branch
vamos removê-lo de toda a história. Veja também: help.github.com/articles/…