.gitignore não está funcionando

Meu arquivo.gitignore parece estar sendo ignorado pelo git – o arquivo .gitignore pode estar corrompido? Qual formato de arquivo, localidade ou cultura o git espera?

Meu .gitignore :

 #this is a comment debug.log nbproject/ 

Saída do git status do git status :

 # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Untracked files: # (use "git add ..." to include in what will be committed) # # debug.log # nbproject/ nothing added to commit but untracked files present (use "git add" to track) 

Eu gostaria que o debug.log e o nbproject/ não aparecessem na lista de arquivos não nbproject/ .

Onde devo começar a procurar consertar isso?

Mesmo que você não tenha rastreado os arquivos até o momento, o git parece ser capaz de “conhecê-los” mesmo depois de adicioná-los ao .gitignore .

OBSERVAÇÃO: primeiro confirme suas alterações atuais ou as perderá.

Em seguida, execute os seguintes comandos na pasta superior do seu repository do git:

 git rm -r --cached . git add . git commit -m "fixed untracked files" 

Quando o arquivo .gitignore não está funcionando (adicionando algo no arquivo .gitignore ou removendo algo do arquivo .gitignore), você pode verificar as seguintes dicas:

  1. você deve prestar atenção ao arquivo gitignore global que às vezes pode influenciar seu gitignore.
  2. Quando você adiciona algo no arquivo .gitignore, como a pessoa que respondeu a essa pergunta primeiro:

     git rm -r --cached . git add . git commit -m "fixed untracked files" 
  1. Quando você remove algo do arquivo .gitignore. Os passos acima não funcionarão para você . Você pode tentar isto:
  git add -f "filetype" git commit -m "Refresh removing filetype from .gitignore file." 

o “tipo de arquivo” significa o arquivo ou tipo de arquivo que você deseja remover do arquivo .gitignore. Você quer fazer com que o tipo de arquivo seja rastreado novamente.

Fixo. Ok, eu criei o arquivo .gitignore no bloco de notas no Windows e não estava funcionando. Quando eu vi o arquivo .gitignore no linux, ele parecia ser um lixo organizado – talvez o bloco de notas tivesse escrito unicode ao invés de ascii ou o que quer que seja 8 bits.

Então eu reescrevi o arquivo na minha checkbox linux, e quando eu o coloquei de volta no windows ele funciona bem! Viva!

Sem adicionar outro commit ao seu projeto, uma linha será suficiente para fazer .gitignore funcionar como deveria:

 git rm -r --cached debug.log nbproject 

Isto irá removê-lo do repository, mas ainda mantê-los fisicamente, em inglês, elimina qualquer histórico de alterações relacionadas a eles, e também não rastreará suas alterações em qualquer commit futuro. Uma melhor explicação você pode encontrar aqui .

Outra causa desse problema são espaços em branco ou guias antes da instrução:

Exemplo:

 #Be aware of following: notWorkingIgnore.* workingIgnore.* 

E como apontado pelo comentário abaixo um espaço à direita pode ser uma questão bem

 #Be aware of following: notWorkingIgnore.* #< -Space workingIgnore.*#<-Nospace 

Notei que a codificação do .gitignore estava tendo um efeito – se o arquivo era Unicode, ele era ignorado, se era ASCII, não era.

Processo:

  1. Verificar status: PS> git status
  2. Crie uma function para Get-FileEncoding
  3. .gitignore teste .gitignore : PS> Get-FileEncoding .gitignore
  4. Altere a codificação para ASCII: PS> Set-Content .gitignore -Encoding Ascii -Value (Get-Content .gitignore)
  5. Confirme: PS> git status

Assim como com as outras soluções, confirme primeiro e esteja ciente de que você perderá todas as alterações não confirmadas.

Eu tive melhores resultados com isso:

 git rm -r --cached . git reset HEAD --hard git status 

Observe que o status não deve ter arquivos modificados agora.

Todas as respostas aqui são na verdade soluções alternativas. Você precisa criar o arquivo .gitignore ANTES de executar o git init , caso contrário o git nunca saberá que você precisa ignorar esses arquivos porque eles já foram rastreados.

 echo .idea/ >> .gitignore git init 

Se você desenvolver diariamente, eu aconselho você a adicionar seus arquivos habituais ignorados ao seu arquivo ~/.gitignore_global . Dessa forma, o git já saberá quais arquivos você (significando “seu usuário”, já que é um arquivo em seu diretório home) normalmente ignoram.

Também confira o diretório , onde você coloca .gitignore Deve estar na raiz do seu projeto :

 ./myproject/.gitignore 

não em

 ./myproject/.git/.gitignore 

No meu caso, é porque os arquivos já existem no repository e estou tentando ignorá-lo.

Estas são as coisas que fiz para corrigir o problema:

  • Copie os arquivos para uma pasta temporária
  • Remova-os da pasta do meu projeto.
  • Confirme as alterações que removem esses arquivos do repo
  • Adicionei novamente esses arquivos à pasta do meu projeto

Até então, todas as alterações que fiz nesses arquivos foram ignoradas.

Eu acho que você não pode ignorar arquivos que já existem no repository.

Há outro problema com o .gitignore que pode acontecer, especialmente para um usuário do windows, o git não gosta quando você nomeia .gitignore (como unity.gitignore ). Você vai querer sempre nomeá-lo .gitignore , ou no windows, .gitignore. Como o Windows pensa que você está tentando renomeá-lo sem um nome de arquivo.

Acabei de me deparar com esta questão. O conteúdo do meu arquivo .gitignore continuou a aparecer na lista de arquivos não acompanhados.

Eu estava usando isso para criar o arquivo de ignorar:

echo "node_modules" > .gitignore

Acontece que as citações duplas estavam causando o problema para mim. Eu apaguei o arquivo de ignorar e, em seguida, usei o comando novamente sem aspas e funcionou como esperado. Eu não precisei mexer na codificação do arquivo. Eu estou em uma máquina Win10 usando o Cmder.

Exemplo:

echo node_modules > .gitignore

Para mim, nenhuma das respostas acima funcionou. Eu tive que copiar o texto .gitignore no arquivo exclude.txt encontrado em

 \.git\info 

Uma vez feito isso, atualize suas alterações e todos os arquivos não rastreados desaparecerão. Commit como de costume.

Eu tenho esse mesmo problema. Eu acredito que a questão foi uma discrepância CR vs CR + LF. Eu escondi coisas no meu .gitignore usando cmd (no windows 7) e o seguinte comando:

Mau:

echo “file_to_be_ignored.py” >> .gitignore
echo “* ~” >> .gitignore

Etc.

O problema é que este comando não coloca o marcador de fim de linha correto para o git reconhecer as novas linhas (CR ou CR + LF quando o git espera o outro). Eu resolvi o problema substituindo manualmente cada nova linha no vim (vim para o resgate!) E funcionou perfeitamente.

Tente editar seu .gitignore no Notepad ++ ou vim (idealmente), mesmo que o arquivo pareça estar formatado corretamente, tente replace as novas linhas. Soa estranho, eu sei, mas funcionou para mim. : D

Eu tive esse problema, com um .gitignore contendo esta linha:

 lib/ext/ 

Acabei de perceber que, na verdade, esse diretório é um link simbólico para uma pasta em outro lugar:

 ls -la lib/ext/ lrwxr-xr-x 1 roipoussiere users 47 Feb 6 14:16 lib/ext -> /home/roipoussiere/real/path/to/the/lib 

Na linha lib/ext/ , o git realmente procura por uma pasta , mas um link simbólico é um arquivo , então minha pasta lib não é ignorada.

Eu consertei isso substituindo lib/ext/ lib/ext no meu .gitignore.

Especificamente para usuários do Windows: Se você tiver arquivos Untracked e limpar / remover os arquivos armazenados em cache não está funcionando. Tente abrir o powershell e converter o arquivo .gitignore em codificação UTF-8.

1) $ Myfile = Get-Content ..gitignore

2) $ Myfile = | Out-File -Encoding “UTF8” .gitignore

É necessário fazer isso apenas uma vez para codificar o arquivo .gitignore para esse diretório e, como o arquivo é codificado corretamente sempre que você editar o arquivo no futuro, ele deverá funcionar. Eu acredito que isso é devido a uma falha com o GitHub não estar prestes a ler codificação não UTF-8 para um arquivo .gitignore. Tanto quanto eu sei que este problema ainda não foi resolvido para o Windows. Não é muito grande coisa, apenas uma dificuldade para depurar quando não está funcionando.

Meu problema era (como OP sugerido) um arquivo .gitignore corrompido. Eu não acreditei que era e ignorei a possibilidade até que todo o resto falhou. A corrupção não apareceu no vi , mas havia dois bytes no início do arquivo que faziam com que o arquivo .gitignore fosse ignorado. Para mim, eles só apareceram quando eu digitei cat .gitignore , que mostrava:

   # Built application files *.apk *.ap_ # ... 

Não faço ideia de como isso acabou aí, mas recriar o arquivo resolveu o problema. Uma análise hexadecimal do arquivo corrompido mostrou o seguinte:

 user@dev ~/project/myproject $ xxd -b .gitignore 00000000: 11111111 11111110 00100011 00000000 00100000 00000000 ..#. . 00000006: 01000010 00000000 01110101 00000000 01101001 00000000 Bui 

Uma coisa é olhar também, você está salvando seu arquivo .gitignore com os finais de linha corretos?

WINDOWS: Se você está usando no Windows, você está salvando com finais de linha do Windows? Nem todos os programas farão isso por padrão, notepad ++ e muitos editores de php padrão para os terminais de linha do linux, então os arquivos serão compatíveis com o servidor. Uma maneira fácil de verificar isso, é abrir o arquivo no bloco de notas do Windows. Se tudo aparecer em uma linha, o arquivo foi salvo com finais de linha do Linux.

LINUX: Se você está tendo problemas com o arquivo trabalhando em um ambiente linux. Abra o arquivo em um editor, como emacs ou nano. Se você vir algum caractere não imprimível, o arquivo foi salvo com finais de linha do Windows.

Ok, então no meu caso a solução aceita não funcionou, e o que funcionou é descrito aqui:

https://ericnelson.wordpress.com/2014/06/21/is-visual-studio-2013-ignoring-your-gitignore-file/

Em resumo:

  • Feche o Visual Studio.
  • Navegue até a sua pasta .git
  • Exclua ms-persist.xml
  • Reinicie o Visual Studio

Espero que isso ajude alguém em algum momento

Acabou de remover a pasta ou arquivo que confirmar anteriormente no git, seguindo o comando, então o arquivo gitignore irá refletir os arquivos corretos.

  git rm -r -f "folder or files insides" 

O arquivo .gitignore não funcionará se você tiver comentários embutidos, como este:

 foo/bar # The bar file contains sensitive data so we don't want to make this public 

Altere para isto:

 # The bar file contains sensitive data so we don't want to make this public foo/bar 

Eu estava tendo um pequeno problema com isso. Consegui ir até o http://www.GitHub.com/project e excluir o arquivo com a interface do usuário e adicionar essa alteração ao repository principal.

Parece que eu adicionei o arquivo ao repository antes de fazer um .gitignore. Isso parece estar funcionando.

Se você é um usuário do Notepad ++, tente fazer o seguinte:

Abra seu arquivo .gitignore usando o Notepad ++ e faça:

Editar> Conversão de EOL> Formato do Windows> Salvar

Tente fazer usando o status git novamente e veja se funcionou para você.

Eu postei a resposta para uma pergunta semelhante aqui .