Módulo 1 — Versionar e colaborar 🟢
Objectivo: levar o código para o GitHub e trabalhar em equipa sem medo. O momento aha: o teu trabalho deixa de viver só no teu portátil — fica seguro e partilhável. Resultado: um repositório privado no GitHub com o teu primeiro push.
1. Git em 4 ideias
- Commit — fotografia de uma alteração.
- Branch — uma linha de trabalho paralela (experimentas sem partir o principal).
- Push / Pull — enviar / trazer alterações do GitHub.
- Merge — juntar uma branch ao principal.
2. GitHub CLI (gh) — sem sair do terminal
gh auth status # confirma que estás autenticado
gh repo create meu-projeto --private --source=. --push
Um comando: cria o repositório no GitHub e envia o código.
3. O ciclo do dia-a-dia
git checkout -b nova-funcionalidade # cria e muda para uma branch
# ... editas ficheiros ...
git add .
git commit -m "feat: adiciona página de contacto"
git push -u origin nova-funcionalidade
gh pr create --fill # abre o Pull Request
4. Mensagens de commit que se entendem
Formato simples e profissional:
feat: nova funcionalidade
fix: correcção de bug
docs: documentação
🔴 Fora do VSCode
Revisão visual de Pull Requests, definições da organização e gestão de colaboradores fazem-se no github.com.
✅ Exercícios
- Publica — pega no
ola-vscodedo módulo anterior e cria o repositório no GitHub comgh repo create. - Branch + PR — cria uma branch, faz uma alteração, comita e abre um Pull Request com
gh pr create. - Histórico — usa
git log --onelinee explica o que cada commit fez.
Resultado esperado: o repositório aparece em
github.com/<o-teu-utilizador>com um PR aberto.
⚠️ Erros comuns
- Commitar segredos (
.env) — usa.gitignore. Se acontecer, roda a chave logo. - Mensagens vagas (“update”, “fix”) — diz o quê:
feat: adiciona login. - Trabalhar sempre na
main— usa branches para não partir o que já funciona. - Esquecer
git pullantes de começar — evita conflitos com a equipa.
📋 Checklist do módulo
- Repositório criado no GitHub (
gh repo create) - Primeiro
pushfeito - Uma branch + Pull Request abertos
-
.envno.gitignore(nenhum segredo no histórico)