usuario - listar branches git




Ignorar arquivos que já foram confirmados em um repositório Git (14)

Eu tenho um repositório Git já inicializado que eu adicionei um arquivo .gitignore para. Como posso atualizar o índice do arquivo para que os arquivos que eu quero ignorar sejam ignorados?


Como diz o dav_i, para manter o arquivo no repositório e removê-lo das mudanças sem criar um commit extra, você pode usar:

git rm -r --cached .

Eu encontrei um problema estranho com .gitignore. Tudo estava no lugar e parecia correto. A única razão pela qual o meu .gitignore era "ignorado" era que o fim da linha estava no Mac-Format (\ r). Então, depois de salvar o arquivo com a terminação de linha correta (no vi usando: set ff = unix) tudo funcionou como um encanto!


Graças à sua resposta, pude escrever este pequeno liner para melhorá-lo. Eu corri no meu .gitignore e repo, e não tive problemas, mas se alguém vê algum problema gritante, por favor, comente. Isso deve git rm -r --cached de .gitignore :

cat $ (git rev-parse - mostrar-toplevel) / .gitIgnore | sed "s // $ //" | grep -v "^ #" | xargs -L 1 -I {} encontrar $ (git rev-parse - mostrar-toplevel) -nome "{}" | xargs -L 1 git rm -r --cached

Observe que você obterá muitas fatal: pathspec '<pathspec>' did not match any files . Isso é apenas para os arquivos que não foram modificados.


Há outra sugestão talvez para os caras lentos como eu =) Coloque o arquivo .gitignore em sua raiz do repositório não na pasta .git . Felicidades!


Nenhuma das respostas funcionou para mim.

Em vez de:

  1. Mova o arquivo para fora do diretório controlado pelo git
  2. Verifique a remoção no git
  3. Mova o arquivo de volta para o diretório controlado pelo git

Depois de mover o arquivo de volta, o git irá ignorá-lo.

Trabalha com diretórios também!


No meu servidor linux server (não é verdade no meu dev local mac), os diretórios são ignorados, desde que eu não adicione um asterisco:

www / archives / *

Eu não sei porque, mas isso me fez perder algumas horas, então eu queria compartilhar ...


Para cancelar o rastreamento de um arquivo que já tenha sido adicionado / inicializado ao seu repositório, ou seja, pare de rastrear o arquivo, mas não o exclua do sistema: git rm --cached filename


Para não rastrear um único arquivo que já tenha sido adicionado / inicializado ao seu repositório, ou seja , pare de rastrear o arquivo, mas não o exclua do sistema: git rm --cached filename

Para desabilitar todos os arquivos que estão no seu .gitignore :

Primeiro, confirme as alterações de código pendentes e, em seguida, execute este comando:

git rm -r --cached .

Isso remove todos os arquivos alterados do índice (área de preparação) e, em seguida, apenas executa:

git add .

Confirme:

git commit -m ".gitignore is now working"

Para desfazer git rm --cached filename , use git add filename .

Certifique-se de confirmar todas as suas alterações importantes antes de executar o git add . Caso contrário, você perderá as alterações em outros arquivos.


Respostas complexas em todos os lugares!

Apenas use o seguinte

git update-index --assume-unchanged filename

Ele removerá os arquivos que você está tentando ignorar da origem e não do mestre em seu computador!

Depois disso, basta cometer e empurrar!


Se os arquivos já estiverem no controle de versão, você precisará removê-los manualmente.


Se você precisar parar de rastrear muitos arquivos ignorados, poderá combinar alguns comandos:

git ls-files -i --exclude-standard | xargs -L1 git rm --cached

Isso pararia de rastrear os arquivos ignorados. Se você quiser realmente remover arquivos do sistema de arquivos, não use a opção --cached . Você também pode especificar uma pasta para limitar a pesquisa, como:

git ls-files -i --exclude-standard -- ${FOLDER} | xargs -L1 git rm


Se você quiser parar o arquivo de rastreamento sem excluir o arquivo do seu sistema local, o que eu prefiro ignorar o config/database.yml . Simplesmente tente:

git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.

Agora, adicione este arquivo ao arquivo .gitignore e confirme as alterações. E a partir de agora, qualquer mudança feita no config / database.yml não será rastreada pelo git.

$ echo config/database.yml >> .gitignore

obrigado


Um outro problema não mencionado aqui é que, se você criou o seu .gitignore no bloco de notas do Windows, pode parecer algo sem sentido em outras plataformas, como descobri. A chave é ter certeza de que a codificação está definida como ANSI no bloco de notas (ou faça o arquivo no linux como eu fiz).

Da minha resposta aqui: https://.com/a/11451916/406592


Uma coisa é também ter em mente se o .gitignore não parece estar ignorando arquivos não .gitignore é que você não deve ter comentários na mesma linha que os ignorados. Então está tudo bem

# ignore all foo.txt, foo.markdown, foo.dat, etc.
foo*

Mas isso não vai funcionar:

foo*   # ignore all foo.txt, foo.markdown, foo.dat, etc.

.gitignore interpreta o último caso como "ignorar arquivos chamados "foo* # ignore all foo.txt, foo.markdown, foo.dat, etc." , o que, obviamente, você não possui.





git-rm