Git como histórico auditável de decisões

Versionamento não é backup manual de arquivos final_v2_definitivo.zip. Git registra snapshots com autor, data e mensagem — base para colaboração, revisão e rollback preciso em equipes profissionais.

Conceitos

  • Repositório: projeto com histórico (.git).
  • Commit: snapshot com mensagem explicando o porquê.
  • Branch: linha de trabalho isolada.
  • Merge / Pull Request: integração revisada.
  • Remote: GitHub, GitLab, etc.
Diagrama PlantUML

Fluxo diário

git status
git diff
git add src/calculadora.js
git commit -m "feat: aplicar desconto acima de 200 horas"
git push origin feature/orcamento

Mensagens no imperativo, escopo claro. Corpo do commit pode detalhar motivação e impacto.

Branches e Pull Request

  1. Crie branch a partir de main atualizada.
  2. Commits pequenos e focados.
  3. Push e abra PR com descrição: o quê, por quê, como testar.
  4. Review (humano) antes de merge.

.gitignore essencial

node_modules/
.env
dist/
.DS_Store
*.log

Nunca versionar segredos. Se vazou, rotacionar credencial — histórico Git retém para sempre.

GitHub Pages

  1. Repo público com index.html na branch publicada.
  2. Settings → Pages → branch main, pasta root.
  3. URL: https://usuario.github.io/repo/

Publique o projeto da semana 3 como portfolio inicial.

Conflitos de merge

Ocorrem quando duas branches alteram mesma região. Git marca conflito; você edita manualmente, escolhe versão correta, commita resolução. Comunicação com colega evita retrabalho.

Configuração inicial (uma vez por máquina)

git config --global user.name "Seu Nome"
git config --global user.email "seu@email.com"
git config --global init.defaultBranch main
git config --global pull.rebase false   # ou true, se a equipe adotar rebase

Email deve bater com conta GitHub para contribuições aparecerem no perfil.

Primeiro repositório do zero

cd ~/estudos/dev-journal/orcamento
git init
git add .
git commit -m "feat: calculadora de orçamento inicial"
git branch -M main
git remote add origin git@github.com:SEU_USUARIO/orcamento.git
git push -u origin main

Use SSH ou HTTPS conforme configurou. Se push falhar, verifique autenticação (token pessoal ou chave SSH).

Desfazer sem pânico

  • git restore arquivo.js — descarta alterações não commitadas no arquivo.
  • git restore --staged arquivo.js — tira do stage, mantém alteração no working tree.
  • git commit --amend — corrige último commit (só se ainda não fez push, ou em branch pessoal).
  • git revert HASH — cria commit que desfaz outro — seguro em main compartilhada.

Evite git reset --hard em branch compartilhada — apaga histórico local de forma irreversível.

Convenção de commits (Conventional Commits)

Prefixos comuns: feat: nova funcionalidade, fix: correção, docs: documentação, refactor: sem mudar comportamento, test: testes. Facilita changelog automático e leitura do histórico.

Colaboração simulada (exercício solo)

  1. Crie branch feature/desconto-visual.
  2. Adicione linha no README explicando regra de desconto.
  3. Commit + push + abra PR no GitHub (mesmo sendo repo pessoal).
  4. Revise diff linha a linha como se fosse revisor — comentário mental: “entendi o porquê?”.
  5. Merge e delete branch remota.

Esse ritual prepara para times reais onde PR é gate de qualidade, não burocracia.

Deploy e README de portfolio

README deve conter: problema resolvido, stack, como rodar localmente, link da demo (Pages), captura de tela. Recrutadores abrem GitHub antes do currículo — repositório vazio ou sem instruções perde oportunidade.

Inspecionar histórico: log e diff

Git não serve só para salvar — serve para entender mudanças:

git log --oneline -10          # últimos 10 commits resumidos
git show HEAD                  # detalhe do último commit
git diff                       # alterações ainda não commitadas
git diff main..feature/orcamento  # diferença entre branches

Antes de commitar, rode git diff e leia linha a linha — há debug esquecido? console.log? arquivo .env? Esse hábito evita vergonha em PR.

Clonar e contribuir em projeto existente

git clone git@github.com:org/projeto.git
cd projeto
git checkout -b fix/readme-typo
# editar, testar
git add README.md
git commit -m "docs: corrigir typo na instalação"
git push origin fix/readme-typo

Contribuições pequenas (documentação, testes) são porta de entrada em open source — mesmo fluxo de empresa, escala menor.

Para aprofundar na web

Para entender melhor este tema, pesquise por:

  • "Git tutorial iniciante Pro Git book" — referência gratuita completa
  • "Conventional Commits especificação" — padronizar mensagens de commit
  • "GitHub Pull Request como abrir" — fluxo de revisão em equipe
  • "GitHub Pages publicar site estático" — deploy do projeto da semana 3
  • "gitignore Node.js template" — o que nunca versionar

Crie repo real, faça três commits atômicos e abra PR mesmo solo — prática do fluxo profissional.

Atividades

  1. Principal benefício de branches feature:

    • A) Eliminar testes
    • B) Isolar trabalho sem destabilizar main
    • C) Aumentar repo automaticamente
    • D) Substituir documentação
    Ver resposta

    Resposta correta: B) Isolar trabalho sem destabilizar main

    Integração controlada via PR mantém main estável.

  2. .env no .gitignore porque:

    • A) Git não lê ocultos
    • B) Contém segredos específicos do ambiente
    • C) Reduz commits
    • D) Pages exige
    Ver resposta

    Resposta correta: B) Contém segredos específicos do ambiente

    Credenciais versionadas vazam permanentemente no histórico.

  3. Descreva fluxo de PR da branch até produção.

    Ver resposta

    Branch → commits → push → PR → review/CI → merge main → pipeline deploy (se houver).