Git guarda o histórico de todo o seu código; GitHub é onde esse histórico vive online. Conceitos mínimos:
- Repositório (repo): a pasta do projeto sob controle do git.
- Commit: uma "foto" do código num momento (fica no histórico para sempre).
- Branch: uma linha de trabalho paralela; push/pull: enviar/trazer commits do GitHub.
.gitignore: lista de arquivos que o git deve ignorar (não versionar).
🔒 Em segurança (um dos pontos mais importantes deste módulo):
- O histórico é permanente: um segredo commitado uma vez continua lá mesmo que você o apague depois — basta olhar um commit antigo (é o seu Ex. 32, com 75 ocorrências no histórico).
- Por isso:
.gitignoreprotege ANTES (impede o.env/wrangler.jsoncde entrar); e se um segredo já entrou, não basta remover — é preciso rotacionar a chave + limpar o histórico (git filter-repo/BFG). - Ferramentas como gitleaks e TruffleHog varrem o histórico inteiro atrás de segredos — do seu lado (defesa) e do lado do atacante (recon em repos públicos).
- Repo público = todo o histórico é lido por qualquer um. Um fork copia o histórico junto.