Jhonatan Pinheiro
Loading page...
Jhonatan Pinheiro
Loading page...
Jhonatan Pinheiro
Loading page...
The difference between Git and GitHub, the branch and Pull Request flow, issues, Actions, releases, security and using the platform as a portfolio.
Muita gente aprende Git e GitHub como se fossem a mesma coisa. Não são — e entender a diferença é o primeiro passo para usar os dois bem.
Dá para usar Git a vida toda sem GitHub. O que você perde é tudo que acontece entre pessoas.
Git resolve o versionamento, mas deixa três perguntas em aberto:
format-patch e e-mail — funciona, mas é do tempo em que o Linux era desenvolvido por lista de discussão.O GitHub responde às três: repositório remoto como fonte da verdade, pull request como forma padronizada de propor mudança e Actions para automatizar verificação e deploy.
Um repositório ("repo") é o projeto: código, histórico, documentação e configuração.
Três arquivos definem a primeira impressão do seu repositório:
README.md # o que é, como rodar, como contribuir — vira a capa do repositório
.gitignore # o que nunca deve ser versionado (node_modules, .env, build)
LICENSE # sem licença, "público" não significa "livre para usar"Repositório público sem licença é, juridicamente, "todos os direitos reservados". Se você quer que usem seu código, escolha uma licença — MIT e Apache 2.0 são as mais comuns.
E o aviso que vale por todos: nunca commite segredo. Token, senha e chave privada em repositório público são varridos por bots em minutos. Se aconteceu, revogue a credencial antes de qualquer outra coisa — apagar o commit não basta, porque ela já foi lida.
O ciclo que praticamente toda equipe usa:
# 1. Traga o estado atual da branch principal
git switch main
git pull
# 2. Crie uma branch para a sua tarefa
git switch -c feat/filtro-por-assunto
# 3. Trabalhe em commits pequenos e descritivos
git add .
git commit -m "feat(blog): filtro por assunto na listagem"
# 4. Publique a branch
git push -u origin feat/filtro-por-assunto
# 5. Abra o Pull Request (pelo site ou pelo gh CLI)
gh pr create --fillPor que branch em vez de commitar direto na main? Porque a main deveria estar sempre publicável. Toda mudança passa por um lugar onde pode ser revisada, testada e desfeita sem afetar quem depende dela.
O GitHub tem um cliente de linha de comando que evita ficar indo ao navegador:
gh auth login # autentica a máquina
gh repo create meu-projeto --private # cria o repositório
gh repo clone usuario/projeto
gh pr create --fill # abre PR com título/corpo dos commits
gh pr list
gh pr checkout 42 # baixa o PR de outra pessoa para testar
gh pr review 42 --approve
gh pr merge 42 --squash --delete-branch
gh issue create --title "Bug no filtro" --body "Passos para reproduzir..."
gh run list # execuções do Actions
gh run watch # acompanha a execução atualO Pull Request (PR) é o coração do GitHub. Ele diz: "tenho estas mudanças nesta branch e quero integrá-las naquela; revisem".
Um PR reúne em um só lugar:
O que faz um bom PR:
| Prática | Por quê |
|---|---|
| Pequeno (menos de ~400 linhas) | PR gigante recebe "LGTM" sem leitura de verdade |
| Um assunto por PR | Facilita revisar, reverter e entender depois |
| Título e descrição claros | O revisor precisa saber o porquê, não só o o quê |
| Print ou vídeo quando é visual | Economiza rodadas de "não entendi o que mudou" |
| CI verde antes de pedir revisão | Não gaste o tempo de outra pessoa com erro de lint |
Três formas de mesclar, e quando usar cada uma:
main. O padrão da maioria das equipes: histórico limpo, um commit por funcionalidade.Nas configurações do repositório você define as regras da main:
É o que transforma boa intenção em processo. Sem isso, o "combinamos de sempre abrir PR" dura até a primeira sexta-feira apertada.
Issues são as tarefas, bugs e ideias do projeto — cada uma com discussão, responsável, rótulos e marco.
# No corpo do commit ou do PR, isto fecha a issue automaticamente ao mesclar:
git commit -m "fix: corrige contraste do tema claro
Closes #42"Recursos que valem conhecer:
bug, enhancement, good first issue. O último é o convite clássico para novos contribuidores..github/ISSUE_TEMPLATE e PULL_REQUEST_TEMPLATE.md padronizam o que você precisa receber.Actions roda tarefas automaticamente quando algo acontece no repositório: um push, um PR aberto, uma tag criada, um horário do dia.
# .github/workflows/ci.yml
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
verificar:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- run: npm ci
- run: npm run lint
- run: npm test
- run: npm run buildCom isso, todo PR chega ao revisor já com lint, teste e build verificados. Os usos mais comuns:
main.on: schedule) — rotinas periódicas, como checar links quebrados ou atualizar dependências.Duas dicas que evitam dor: use secrets para credenciais (nunca escreva token no YAML) e fixe a versão das actions (@v4, ou melhor, o hash do commit) para não ser surpreendido por uma atualização de terceiro.
gh release create v1.2.0 --generate-notes
gh release upload v1.2.0 ./dist/app.zipO GitHub embute várias camadas de proteção — e a maioria é só ligar:
E do seu lado: use SSH ou token com escopo mínimo, nunca senha; e prefira fine-grained tokens, que dão acesso a repositórios específicos em vez de à conta inteira.
# Chave SSH: gere, adicione ao agente e cadastre a pública no GitHub
ssh-keygen -t ed25519 -C "voce@email.com"
ssh-add ~/.ssh/id_ed25519
gh ssh-key add ~/.ssh/id_ed25519.pub
ssh -T git@github.com # testa a conexãoPara quem está construindo carreira, o perfil no GitHub costuma ser lido antes do currículo. O que realmente pesa:
Sobre o "quadradinho verde": consistência é boa, mas ninguém sério contrata por causa dele. Commit diário sem substância é fácil de identificar.
| Plataforma | Se destaca em |
|---|---|
| GitHub | Maior comunidade, melhor ecossistema, Actions e integrações |
| GitLab | CI/CD muito completo e opção auto-hospedada madura |
| Bitbucket | Integração forte com Jira e o restante da Atlassian |
| Azure DevOps | Ambientes corporativos Microsoft, com boards e pipelines |
| Gitea / Forgejo | Leve e auto-hospedado — o "GitHub de casa" |
Para projeto pessoal, open source e portfólio, GitHub é a escolha padrão pelo alcance. Para empresa com exigência de dado on-premise, GitLab e Gitea auto-hospedados costumam entrar na conversa.
Git guarda a história do seu código. GitHub é onde essa história encontra outras pessoas — para revisar, automatizar, publicar e colaborar.
Se você está começando, o caminho mais curto para tirar proveito real:
good first issue em um projeto que você usa e mande seu primeiro PR.O quinto passo é o que muda de patamar: é quando o GitHub deixa de ser um backup do seu código e vira o lugar onde você trabalha com o resto do mundo.