usuario - listar branches git




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

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 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?


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