git ready

dicas diárias para o noob ao guru
por Nick Quaranto, traduzido pela comunidade RailsBr

ignorando arquivos

publicado em 19 Jan 2009

Nós não precisamos que GIT monitore tudo em nossos projetos, sejam arquivos compilados, arquivos com senhas, ou arquivos temporários que os editores adoram criar. Normalmente, manter coisas fora de seu VCS é uma tarefa difícil de gerênciar e chata de configurar. Com GIT não! Usando o arquivo .gitignore e algumas outras opções, vamos aprender a ignorar arquivos por projeto e por usuário.

A maneira mais simples e mais fácil é criar um arquivo .gitignore no diretório raiz do projeto. Os arquivos que escolhar pra ignorar serão ignorados em todos os diretórios do projeto, salvo se incluírem seus próprios arquivos .gitignore. Isso é bom por que você tem apenas um lugar para configurar diferente do SVN svn:ignore que deve ser definido em cada diretório. Além disso, o arquivo pode ser monitorada o que é muito bom.

Aqui está um .gitignore básico:

$ cat .gitignore

# Ignorar arquivos específicos
.DS_Store

# Use curingas como
*~
*.swp

# Ignorar todos os diretórios e arquivos em um diretório.
tmp/**/* 

É evidente que isso pode ficar muito mais complexo. Você pode adicionar exceções para ignorar as regras, iniciando a linha com !. Veja um exemplo disto no Guia sobre ignore do GitHub.

Mantenha em mente duas coisas quando for ignorar arquivos: Primeiro, se um arquivo já está sendo monitorado pelo GIT, adicionando-o no arquivo .gitignore o GIT não vai parar o monitora-lo. Você precisará fazer git rm --cached <file> para manter o arquivo em sua árvore e então ignora-lo. Em segundo lugar, diretórios vazios não são monitorados pelo GIT. Se você quiser que sejam monitorados, eles precisam ter algo dentro. Normalmente um touch .gitignore é suficiente para manter a pasta monitorada.

Você também pode abrir o arquivo $GIT_DIR/info/exclude ($GIT_DIR é habitualmente o seu diretório .git) e edita-lo para que o projeto ignore os arquivos. O problema com isto é que essas mudanças não são monitoradas, por isso use este modo apenas se tiver alguns arquivos pessoais que não precisam ser compartilhadas com os outros dentro do projeto.

Sua opção final para ignorar diretórios é adicionando uma configuração por usuário usando a opção core.excludesfiles no seu arquivo de configuração. Você pode configurar um arquivo .gitignore em seu diretório HOME, que afetará todos os seus repositórios, executando este comando:

git config --global core.excludesfile ~/.gitignore

Leia o manual se você quiser saber mais sobre como o ignore funciona. Como sempre, se você tiver outras sugestões relacionadas nos envie um comentário.

(Este artigo foi generosamente traduzido por Marcio Trindade)