Por que .gitignore não está ignorando meus arquivos?

128

Veja a imagem abaixo. Meu arquivo .gitignore deveria ignorar todos os arquivos em src / dist, mas não está.

insira a descrição da imagem aqui

Richard
fonte

Respostas:

220

.gitignoreignora apenas os arquivos que ainda não fazem parte do repositório. Se você já git addeditou alguns arquivos, suas alterações ainda serão rastreadas. Para remover esses arquivos de seu repositório (mas não de seu sistema de arquivos), use git rm --cached-os.

Elmar Peise
fonte
9
git rm --cached file_name.ext funciona bem para mim atualizar o gitignore para um arquivo. obrigado.
sybozz
3
Eu fiz isso, mas o GitHub ainda deseja rastreá-los e adicioná-los.
Netside 01 de
94

O arquivo .gitignore garante que os arquivos não rastreados pelo Git permaneçam não rastreados.

Apenas adicionar pastas / arquivos a um arquivo .gitignore não irá desfazê-los - eles permanecerão monitorados pelo Git.

Para cancelar o rastreamento de arquivos, é necessário remover do repositório os arquivos rastreados listados no arquivo .gitignore. Em seguida, adicione-os novamente e confirme suas alterações.

A maneira mais fácil e completa de fazer isso é remover e armazenar em cache todos os arquivos do repositório e, em seguida, adicioná-los novamente. Todas as pastas / arquivos listados no arquivo .gitignore não serão rastreados. Na pasta superior do repositório, execute os seguintes comandos:

git rm -r --cached . git add .

Em seguida, comprometa suas alterações:

git commit -m "Untrack files in .gitignore"

Observe que quaisquer commits anteriores com os arquivos indesejados permanecerão no histórico de commits. Ao enviar para o GitHub, esteja ciente de um histórico de commit que pode conter .envou client_secret.jsonarquivos.

A prática recomendada é criar um arquivo .gitignore e preenchê-lo com as pastas / arquivos que você não deseja rastrear ao iniciar um projeto. No entanto, muitas vezes é necessário adicionar ao arquivo .gitignore depois de perceber que os arquivos indesejados estão sendo rastreados e armazenados.

MarckK
fonte
obrigado pela resposta. Isso realmente ajudou. Não se esqueça de empurrar o repo para o git também
Chris Reed
Depois de usar a git rm -r --cached .reversão, todas as alterações também funcionam para adicionar novamente todos os arquivos que não devem ser excluídos com .gitignore .
Adam Hurwitz
8

gitignore ignora apenas arquivos não rastreados. Seus arquivos são marcados como modificados - o que significa que eles foram confirmados no passado e agora são rastreados pelo git.

Para ignorá-los, você primeiro precisa excluí- git rmlos, confirmá-los e então ignorá-los.

Igal S.
fonte
6

Você pode usar git rm -r --cached ./node_modules. Suponha que se você deseja ignorar o nó

sam r
fonte
4

Olhe para isto: .gitignore não está funcionando E particularmente a observação do ADTC:

Certifique-se de que seu arquivo .gitignore usa codificação ANSI ou UTF-8. Se ele usar algo como Unicode BOM, é possível que o Git não consiga ler o arquivo. - ADTC 14 de dezembro de 17 às 12:39

Philippe Raemy
fonte
0

Primeiro exclua o arquivo index.lock do seu repositório git

rm -f .git/index.lock

e depois adicione .gitignore

git add .gitignore
KayV
fonte