← as aulas · Núcleo de Segurança Neon · aula 05

O que o Git não pode ver

No Git não existe apagar. Por isso a regra não é tirar o segredo depois — é não deixar entrar nem uma vez.

começar

a receita, igual em toda aula

1 · o erro

O código errado, como quase todo mundo faz.

2 · o porquê

Por que aquilo é perigoso, em português.

3 · a correção

O código certo.

4 · a prova

O terminal respondendo.

05 Confiar na memória

impedir a entrada, não remover depois

1 · o erro

Não tem código para mostrar aqui, e é esse o ponto. O erro é uma intenção:

git add .

Você sabe que o .env não pode subir. Sabe hoje, sabe amanhã. Um dia você está com pressa, resolvendo outra coisa, e digita esse ponto. Ele quer dizer tudo.

2 · o porquê

O Git foi feito para não esquecer. Essa é a qualidade dele, e é exatamente o que o torna implacável com segredo.

Se a senha entrou num commit, apagar o arquivo depois não resolve: o commit antigo continua no histórico. Quem clonar leva. Quem já clonou, já tem. Se o repositório passou um minuto público, considere o segredo queimado — não existe desfazer, só existe trocar.

É por isso que a ordem certa é sempre a mesma, e ela não é intuitiva:

  • 1 · trocarGere uma senha nova. O segredo antigo está comprometido no momento em que virou público — nenhuma limpeza de histórico desfaz isso.
  • 2 · ignorarSó depois arrume o .gitignore, para o novo não seguir o caminho do velho.

Quem faz na ordem inversa passa horas reescrevendo histórico para esconder uma senha que continua valendo.

3 · a correção

Quatro linhas no .gitignore. A última é a que quase ninguém escreve:

# Environment variables
.env
.env.local
.env.production
!.env.example

A exclamação é uma exceção: "ignore tudo que combina com o de cima, menos este". Sem ela, o .env.example — o formulário em branco que todo mundo precisa — seria bloqueado junto e ninguém conseguiria configurar o projeto.

E a regra vale para além de senha. Qualquer arquivo que fale da sua vida entra na lista, com o motivo escrito ao lado para ninguém apagar depois:

# Dados extraídos (contêm conteúdo real de e-mail — NUNCA versionar)
emails_*.json
quarentena/
4 · a prova

Não confira com o olho. As regras do .gitignore se sobrepõem e uma exceção pode cancelar a outra sem avisar. Pergunte ao próprio Git qual regra pegou o arquivo:

git check-ignore -v .env

A resposta real, neste repositório:

.gitignore:15:.env	.env

Lê-se: o arquivo .env foi bloqueado pela regra escrita na linha 15 do .gitignore. Não é opinião — é o Git dizendo quem mandou.

Se o comando não responder nada, o arquivo não está ignorado. O silêncio aqui é a má notícia.

E a frase que fecha a aula, dita na frente da tela: o .env existe no meu computador, mas o Git não enxerga ele.

arquivo · .gitignore linhas 14–18

para levar

No Git não existe apagar, existe trocar. E a única conferência que vale é a que um comando faz por você — a memória é justamente a peça que falha no dia em que você está com pressa.

Núcleo de Segurança Neon · aula 05 de 6 · todo código desta página foi copiado de um arquivo real do projeto — nenhum exemplo foi inventado