Trilha de aprendizado · Nível 1 · Tutorial 5

Evitar arquivos desnecessários nos commits com .gitignore

Você será capaz de definir quais arquivos locais devem ficar fora do versionamento, verificar as regras de exclusão e reconhecer os limites do .gitignore na proteção de credenciais.

  • Nível: Iniciante
  • Duração: 13 min
  • 7 passos
Evitar arquivos desnecessários nos commits com .gitignore

O que você vai percorrer

  1. Escolher o que deve ficar fora do histórico Distinguir arquivos necessários ao projeto de arquivos descartáveis ou específicos de uma máquina. 2 min
  2. Criar regras no .gitignore Crie o arquivo no lugar certo e escreva regras por nome, extensão e pasta, considerando também as subpastas. 3 min
  3. Conferir o efeito com git status Compare o status antes e depois de salvar as regras e confira quais arquivos continuam disponíveis para versionamento. 2 min
  4. Versionar o próprio .gitignore Prepare, confira e registre o .gitignore para incluir as regras no histórico do projeto. 2 min
  5. Entender os limites das regras Preveja o efeito de uma nova regra sobre arquivos não rastreados, já preparados e presentes no histórico. 2 min
  6. Manter credenciais fora dos commits Diferencie a prevenção de commits com credenciais da resposta necessária quando uma credencial já foi exposta. 2 min
  7. Aplicar as regras e concluir Resolva um miniprojeto: escreva regras, confira o resultado esperado e decida como agir diante de uma credencial exposta. 3 min

O que você vai aprender

  • Identificar arquivos temporários, logs e configurações locais que não devem fazer parte do histórico.
  • Criar um .gitignore na raiz do projeto com regras por nome, extensão e pasta.
  • Verificar com git status o efeito das regras sobre arquivos não rastreados e registrar o próprio .gitignore.
  • Explicar por que adicionar uma regra não remove arquivos já rastreados nem apaga versões anteriores.
  • Reconhecer que senhas, tokens e chaves privadas não devem entrar em commits e que credenciais expostas precisam ser revogadas ou substituídas.

Antes de começar

  • Registrar alterações em commits locais
  • Inspecionar alterações e histórico com diff e log

Passo 1 de 7

Escolher o que deve ficar fora do histórico

Distinguir arquivos necessários ao projeto de arquivos descartáveis ou específicos de uma máquina.

Selecione pela função

O que precisa acompanhar o projeto?

Antes de preparar um commit, pergunte: este arquivo é necessário para compreender, executar ou manter o projeto? Código e instruções costumam fazer parte do histórico. Arquivos descartáveis ou específicos do seu computador são candidatos a ficar fora.

Exemplo

Candidatos comuns a ficar fora

  • Temporários: sobras descartáveis de uma edição.
  • Logs: registros de uma execução local.
  • Caches: dados que o programa recria para acelerar o uso.

Decida pelo uso de cada arquivo

Associe o arquivo à decisão

Considere a função descrita de cada arquivo deste projeto fictício.

Toque em um item e depois no par correspondente.

Evite exclusões automáticas

Configuração compartilhada ou pessoal?

Uma configuração usada por toda a equipe pode ser essencial ao projeto. Já preferências pessoais do editor ou caminhos que só existem no seu computador costumam ficar fora do histórico.

Dica

Gerado não significa descartável

Ser gerado automaticamente não basta para excluir um arquivo. Se ele precisa acompanhar cada versão do projeto, pode ser necessário registrá-lo.

Escolha o que deve acompanhar a versão

Quais arquivos devem entrar no histórico?

Um projeto tem três arquivos novos:

  • regras.json: configurações de validação compartilhadas pela equipe.
  • editor.local.json: preferências pessoais do editor.
  • tabela.json: arquivo gerado que precisa acompanhar cada versão para o programa funcionar.

Passo 2 de 7

Criar regras no .gitignore

Crie o arquivo no lugar certo e escreva regras por nome, extensão e pasta, considerando também as subpastas.

Um arquivo, uma regra por linha

Nome e local certos

Na raiz do projeto — a pasta principal — crie um arquivo de texto chamado exatamente .gitignore. Ele deve ficar fora da pasta interna .git, e não pode ter .txt no final do nome.

Escreva um padrão por linha, como neste exemplo:

Conteúdo do .gitignore

gitignore
config.local.json
*.log
cache/

Três formas de escrever uma regra

  • Nome: config.local.json corresponde a esse nome, sem incluir todo arquivo .json.
  • Extensão: *.log usa o curinga * para corresponder a nomes que terminam em .log.
  • Pasta: cache/ usa a barra final para indicar uma pasta chamada cache e seu conteúdo.

Complete as regras

Pelo nome

O arquivo pessoal é ajustes.local.json; o compartilhado é ajustes.json. Use o nome exato para excluir apenas o pessoal:

____

Pela extensão

Use o curinga * para corresponder aos nomes que terminam em .log:

____

Pela pasta

Indique a pasta cache e seu conteúdo, usando a barra final:

____

As regras também alcançam subpastas

Estar na raiz não limita a regra à raiz

Com o .gitignore na raiz, os três padrões apresentados também podem corresponder a nomes dentro de subpastas do projeto.

Exemplo

Exemplos de correspondência

  • config.local.json corresponde tanto a config.local.json quanto a ambiente/config.local.json.
  • *.log corresponde tanto a execucao.log quanto a logs/execucao.log.
  • cache/ corresponde tanto à pasta cache/ quanto à pasta src/cache/, incluindo o conteúdo de cada uma.

Confira o alcance

Qual arquivo fica fora dessas regras?

O .gitignore na raiz contém config.local.json, *.log e cache/, uma regra por linha. Qual arquivo NÃO corresponde a nenhuma dessas regras?

Passo 3 de 7

Conferir o efeito com git status

Compare o status antes e depois de salvar as regras e confira quais arquivos continuam disponíveis para versionamento.

Salve as regras e confira

Depois de salvar o .gitignore, execute git status na pasta do projeto. Os arquivos não rastreados que correspondem às regras deixam de aparecer na saída padrão do comando.

Exemplo

Um projeto fictício

Queremos manter README.md e app.py disponíveis para versionamento. Já config.local.json, app.log e os arquivos temporários de cache/ devem ficar de fora.

Regras do .gitignore na raiz

gitignore
config.local.json
*.log
cache/

Compare as duas saídas

Todos os arquivos listados inicialmente são não rastreados. Entre as duas execuções de git status, a única mudança foi criar e salvar o .gitignore com as regras apresentadas. Veja os trechos simplificados:

Antes de criar o .gitignore

plaintext
Arquivos não rastreados:
  README.md
  app.log
  app.py
  cache/
  config.local.json

Depois de salvar as regras

plaintext
Arquivos não rastreados:
  .gitignore
  README.md
  app.py

O resultado foi o esperado?

Justifique sua resposta: o que deixou de aparecer na listagem e quais arquivos estão disponíveis para versionamento depois?

Escreva pelo menos 20 caracteres (0/20).

Fora da listagem, não do disco

Dica

Ignorar não é apagar

app.log, config.local.json e o conteúdo de cache/ continuam no disco. As regras apenas fizeram esses arquivos não rastreados deixarem de aparecer na saída padrão do git status.

O .gitignore deve aparecer

Neste exemplo, ver o próprio .gitignore entre os não rastreados é esperado: ele está disponível para ser registrado. A conferência está completa quando os arquivos locais pretendidos ficam fora da listagem e os arquivos necessários continuam nela.

Passo 4 de 7

Versionar o próprio .gitignore

Prepare, confira e registre o .gitignore para incluir as regras no histórico do projeto.

As regras também fazem parte do projeto

O .gitignore normalmente deve ser versionado: ele registra quais arquivos devem ficar fora dos commits.

Salvar o arquivo faz as regras valerem localmente. Preparar e fazer o commit registra essas regras no histórico do projeto.

Salvar ou registrar?

As regras do .gitignore só começam a valer depois que você faz o commit desse arquivo.

Prepare, confira e registre

Use o fluxo que você já conhece. Neste exemplo, as exclusões já foram conferidas e não há outros arquivos preparados. O objetivo é registrar somente o .gitignore.

Na raiz do projeto, execute:

Prepare e confira

bash
git add .gitignore
git diff --staged

Confira o conteúdo preparado

O diff deve mostrar apenas o .gitignore, com as regras pretendidas, como config.local.json, *.log e cache/.

Essas linhas são regras, não o conteúdo dos arquivos ignorados. Se aparecerem outros arquivos ou regras inesperadas, revise a preparação antes de continuar.

Se a conferência estiver correta, registre

bash
git commit -m "Adiciona regras para ignorar arquivos locais"

O que entra nesse commit?

Você preparou apenas o .gitignore. Na conferência, o diff mostra +*.log como uma linha adicionada a esse arquivo. O que essa linha leva para o commit?

Passo 5 de 7

Entender os limites das regras

Preveja o efeito de uma nova regra sobre arquivos não rastreados, já preparados e presentes no histórico.

Uma regra não interrompe o rastreamento

Adicionar uma regra ao .gitignore não faz o Git parar de rastrear um arquivo.

Isso vale também para um arquivo novo que você já adicionou à área de preparação: ele continua preparado, mesmo que você salve uma regra correspondente depois.

Exemplo

A regra está certa, mas o arquivo já era rastreado

Você já versionou config.local.json. Depois, adicionou esse nome ao .gitignore e editou o arquivo.

O git status continua mostrando a modificação. Isso não significa que a regra esteja escrita incorretamente: ela não interrompe o rastreamento existente.

Mesmo padrão, efeitos diferentes

O que acontece com cada arquivo?

Você acabou de salvar *.log no .gitignore da raiz. Sem fazer nenhuma outra alteração, associe cada situação ao resultado.

Toque em um item e depois no par correspondente.

O histórico também permanece

A regra não age sobre commits anteriores

Salvar ou fazer commit do .gitignore não modifica commits anteriores nem apaga versões antigas de arquivos.

Se um arquivo já entrou em um commit, adicionar uma regra correspondente depois não remove aquela versão do histórico. O commit do .gitignore registra as regras, mas não altera o passado.

Confira o limite no histórico

Verdadeiro ou falso?

Ontem, execucao.log entrou em um commit. Hoje, você salvou e versionou a regra *.log no .gitignore. A versão de execucao.log registrada ontem continua naquele commit.

Passo 6 de 7

Manter credenciais fora dos commits

Diferencie a prevenção de commits com credenciais da resposta necessária quando uma credencial já foi exposta.

Prevenir exige revisão

Credenciais ficam fora dos commits

Senhas, tokens e chaves privadas são credenciais de acesso e não devem entrar em commits. Regras para arquivos locais sensíveis ajudam na prevenção, mas o .gitignore não é um cofre nem uma garantia de segurança.

Dica

Confira em dois momentos

Antes de usar git add, examine o conteúdo dos arquivos escolhidos, inclusive os novos. Antes do commit, confira o conteúdo preparado com git diff --staged. Se encontrar uma credencial, interrompa o commit e corrija o conteúdo que será registrado.

Nesta prática, não use credenciais reais.

A regra substitui a revisão?

Avalie a afirmação

Depois de ignorar o arquivo local que guarda meu token, posso dispensar a revisão do conteúdo preparado antes do commit.

Quando a credencial já foi exposta

A credencial antiga precisa parar de funcionar

Providencie imediatamente a revogação ou a substituição da credencial exposta junto ao serviço responsável. Revogar significa invalidar a credencial. Se houver substituição, garanta que a antiga deixe de funcionar: criar uma nova e manter a antiga ativa não resolve a exposição.

Atenção

Ocultar agora não desfaz a exposição

Adicionar uma regra ao .gitignore ou apagar a credencial da versão atual não neutraliza uma exposição anterior. Os commits antigos não são alterados por essas ações, e alguém pode ter copiado a credencial.

Responda à exposição

O que ainda é indispensável?

Em um cenário fictício, um token entrou em um commit visto por outras pessoas. Você removeu o token da versão atual e adicionou uma regra ao .gitignore. Qual ação ainda é necessária?

Passo 7 de 7

Aplicar as regras e concluir

Resolva um miniprojeto: escreva regras, confira o resultado esperado e decida como agir diante de uma credencial exposta.

Seu desafio final

Um miniprojeto para organizar

Neste repositório fictício, todos os arquivos abaixo ainda estão não rastreados e nada está preparado. O .gitignore ainda não existe, e não há outras regras de exclusão. Use a função de cada arquivo para decidir o que deve ficar fora do histórico.

Arquivos e suas funções

text
miniprojeto/
├── README.md             — instruções do projeto
├── app.js                — código-fonte
├── config.shared.json    — configuração necessária para todos
├── config.local.json     — preferências desta máquina
├── debug.log             — log descartável de execução
└── cache/
    └── resultado.tmp     — cache que pode ser recriado

Das regras ao registro

Monte sua solução

Para o miniprojeto da tela anterior:

  1. Escreva três regras para um .gitignore na raiz: uma por nome, uma para a extensão dos logs e uma por pasta.
  2. Diga quais arquivos devem continuar aparecendo no git status após salvar as regras, antes de preparar qualquer arquivo.
  3. Descreva como preparar, conferir e registrar somente o .gitignore em um commit.

Escreva pelo menos 30 caracteres (0/30).

Quando a regra não resolve

Um cenário diferente

Agora imagine que config.local.json já estava em um commit e continha um token que foi exposto. Qual avaliação está correta?

Checklist para os próximos commits

Resumo

Antes de registrar

  • Selecione pela função: exclua arquivos locais ou descartáveis, preservando o que o projeto precisa.
  • Confira com git status: os não rastreados ignorados deixam de aparecer; os necessários continuam disponíveis.
  • Versione o .gitignore. Revise os arquivos antes de preparar e o conteúdo preparado antes do commit, sem incluir credenciais.
  • Lembre-se: uma regra não desfaz rastreamento, preparação nem commits anteriores.
  • Credencial exposta exige revogação ou substituição com invalidação da antiga no serviço responsável.

Tutorial concluído!

Parabéns! Você concluiu: Evitar arquivos desnecessários nos commits com .gitignore

Use esse checklist para manter seus próximos commits focados no que o projeto precisa, sem tratar o .gitignore como garantia de segurança.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso