Boas práticas

Saiba o que ignorar

Existem vários tipos de arquivo que normalmente você deve ignorar em um repositório Git usando um arquivo .gitignore. Ignorar esses arquivos mantém o repositório limpo e evita que arquivos desnecessários acabem em commits.

Artefatos de build. Não commite artefatos de build no repositório — eles podem ser gerados de novo a partir do código-fonte e só vão inchar o repo. Eles também podem mudar um pouco a cada vez (por exemplo, timestamps), bagunçando o controle de versão.

Possíveis exceções:
  1. Se os artefatos são entregas finais (por exemplo, arquivos estáticos de um site para deploy).
  2. Se é útil ver as mudanças nos arquivos de build entre releases.
  3. Se o processo de build é lento ou pesado, commitar os artefatos pode economizar tempo.

Dependências do projeto. Não commite dependências — elas podem ser instaladas por um gerenciador de pacotes e só vão inchar o repo. Atualizações frequentes também bagunçam o controle de versão. Em vez disso, commite os arquivos de lock ou de manifesto para registrar as versões exatas.

Possíveis exceções:
  1. Commitar dependências pode acelerar os builds, porque elas não precisam ser baixadas toda vez. Isso pode ficar relevante se o projeto tem testes automatizados.
  2. Commitar dependências garante que o projeto seja construído com versões exatas e previne ataques à cadeia de suprimentos (supply chain). Pense em um hacker da Coreia do Norte que invade o registro global de pacotes, e você, sem desconfiar de nada, instala o pacote infectado. É uma história real que já aconteceu várias vezes.

Chaves de API e outros segredos. Você pode ter um arquivo de configuração com chaves de API, senhas ou outros segredos. Melhor não commitar esses arquivos no repositório, porque eles contêm informações sensíveis. Além disso, pode ser que você queira usar chaves diferentes em cada ambiente (desenvolvimento, testes, produção).

Logs e arquivos temporários. Seu projeto pode gerar arquivos de log, arquivos temporários ou outros arquivos que não fazem parte do código-fonte. Esses arquivos não são úteis para o projeto, e é melhor não commitá-los no repositório.

Arquivos binários grandes. Arquivos grandes (por exemplo, imagens, vídeos, arquivos compactados) com mais de 100 MB não são adequados para o controle de versão. O Git não foi projetado para lidar com arquivos grandes de forma eficiente, e isso pode deixar o repositório lento. Use o Git LFS ou outras ferramentas para gerenciar arquivos grandes. Você até pode commitar arquivos grandes, mas no longo prazo isso só vai deixar tudo mais lento.

Arquivos de IDE e de editor. Editores e IDEs modernos criam diretórios ocultos com suas configurações e arquivos de cache. Em geral, esses arquivos não são úteis para o projeto, porque contêm as suas preferências e configurações pessoais. Mas pode fazer sentido commitá-los no repositório se a equipe quiser compartilhar as mesmas configurações.

Arquivos de sistema. No macOS, o sistema operacional pode criar do nada arquivos de serviço chamados .DS_Store no diretório do projeto. Normalmente esses arquivos ficam ocultos no Finder, mas aparecem no terminal. Eles não são úteis para o projeto, e é melhor não commitá-los no repositório.