# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"
( certifique-se de confirmar primeiro as alterações que deseja manter , para evitar qualquer incidente, como os comentários do jball037 abaixo .
A --cachedopção mantém os arquivos intocados no disco.
Eu descobri que a etapa git add é desnecessária; quando executo o status git após o git rm --cached, os arquivos removidos já estão na área de teste e você pode simplesmente prosseguir e enviá-los.
@VonC desculpe, isso não foi para ser um discurso retórico ou um palito :) Mas sim, eu usei --cached e todas as minhas alterações não confirmadas foram perdidas quando eu verifiquei meus arquivos. Em pânico por um momento, mas "git reset CABEÇA" restaurado meus arquivos (mas desta vez sem os arquivos que eu especificadas no .gitignore, assim que sua solução ainda funcionou!)
jball037
3
@ jball037 Good. Eu adicionei o aviso e editei a resposta de acordo.
VonC 07/07/2015
1
Se eu ler uma linha ainda mais antes de fazer isso "(certifique-se de cometer primeiro as alterações que pretende manter, para evitar qualquer incidente como jball037" #fml
Aiden Strydom
9
Posso entender mal, mas você está tentando excluir arquivos ignorados recentemente ou deseja ignorar novas modificações nesses arquivos? Nesse caso, a coisa está funcionando.
Se você deseja excluir arquivos ignorados confirmados anteriormente, use
Este é um exemplo muito simples de como remover arquivos após a atualização do meu .gitignore No entanto, ele precisa de algumas atualizações menores: `` git rm –cached git ls-files -i –exclude-standard git commit -m 'clean up' '
Aaron
1
Sei que essa é uma pergunta antiga, mas a solução da gracchus não funciona se os nomes de arquivos contiverem espaços. A solução da VonC para arquivar nomes com espaços é não removê-los utilizando--ignore-unmatch e removê-los manualmente, mas isso não funcionará bem se houver muito.
Aqui está uma solução que utiliza matrizes bash para capturar todos os arquivos.
Respostas:
A solução mencionada em " O arquivo .gitignore não está ignorando " é um pouco extrema, mas deve funcionar:
( certifique-se de confirmar primeiro as alterações que deseja manter , para evitar qualquer incidente, como os comentários do jball037 abaixo .
A
--cached
opção mantém os arquivos intocados no disco.Você também tem outra solução mais refinada na postagem do blog " Fazendo o Git ignorar arquivos já rastreados ":
Bassim sugere em sua edição :
Arquivos com espaço em seus caminhos
fonte
Posso entender mal, mas você está tentando excluir arquivos ignorados recentemente ou deseja ignorar novas modificações nesses arquivos? Nesse caso, a coisa está funcionando.
Se você deseja excluir arquivos ignorados confirmados anteriormente, use
fonte
git ls-files -i –exclude-standard
git commit -m 'clean up' 'Sei que essa é uma pergunta antiga, mas a solução da gracchus não funciona se os nomes de arquivos contiverem espaços. A solução da VonC para arquivar nomes com espaços é não removê-los utilizando
--ignore-unmatch
e removê-los manualmente, mas isso não funcionará bem se houver muito.Aqui está uma solução que utiliza matrizes bash para capturar todos os arquivos.
fonte