Como ignorar todos os diretórios / arquivos ocultos recursivamente em um repositório git?

128

Eu gostaria que o Git ignorasse todos os arquivos e diretórios ocultos. ie

  • .aptitude
  • .ssh/
  • .bash_rc
  • config/.hidden

Existe uma regra simples para cobrir isso sem adicionar especificamente cada entrada?

Poe
fonte

Respostas:

165

Basta adicionar um padrão a .gitignore

.*
!/.gitignore

Editar: Adicionado o .gitignorepróprio arquivo (importa se ainda não foi confirmado).

Daniel Böhmer
fonte
3
Você pode querer forçar a adição de alguns arquivos necessários após isso. por exemplo. o arquivo .htaccess. Com base em suas necessidades, é claro.
Dakdad 5/11
3
@dakdad: Obrigado pela sugestão. Melhorou a resposta. Se o Poe tiver alguns arquivos especiais, como .htaccessjá foram registrados, eles continuam sendo seguidos. gitignoreé importante apenas para novos arquivos.
Daniel Böhmer
@ DanielBöhmer Talvez isso esteja saindo do assunto, mas existe um motivo para não ignorar apenas /.gitignoree nem todos os .gitignorearquivos, independentemente de onde eles estão localizados? Ou seja, por que não listar !.gitignore(sem barra)?
Jason Young
1
@JasonYoung Pergunta interessante. Bem, esse padrão ignora apenas o próprio arquivo. Acho isso mais conciso, sem efeitos colaterais, para um exemplo copiar e colar. Obviamente, você provavelmente pode simplesmente ignorar todos os .gitignorearquivos no seu .gitignorearquivo de nível superior . Mas essa escolha é sua.
Daniel Böhmer
64

.gitignore afetará apenas arquivos que ainda não foram 'adicionados'.

Para fazer novas entradas .gitignore afetarem todos os arquivos

  1. Faça alterações no .gitignore
  2. git commit -a -m "Pre .gitignore changes"
  3. git rm -r --cached .
  4. git add .
  5. git commit -a -m "Post .gitignore changes"
  6. git status deve gerar "nada a confirmar (diretório de trabalho limpo)" `
Nat Darke
fonte
A linha "ainda não foi 'adicionada'" é a chave aqui, porque se você já confirmou um determinado arquivo, a opção ignorar não funcionará mais nele, você deve excluí-lo do repositório e da próxima vez que o criar .gitignore irá ignorá-lo.
Georgi Peev
21

Em .git/info/exclude, adicione esta linha:

.*

Isso tornará a ignorância de todos os arquivos ocultos / pontos recursivamente o padrão para todos os repositórios na máquina. Um .gitignorearquivo separado para cada repo não é necessário dessa maneira.

slayedbylucifer
fonte