fbpx

Guia de Referência Git

Git — Guia de Referência
⚡ Cheat Sheet

Git — Guia de
Referência Rápida

Desenvolvido por J. L. Gregório

Tudo o que você precisa para dominar o controle de versão: dos comandos essenciais ao fluxo profissional com Conventional Commits.

01

Configuração Inicial

Antes de tudo, configure sua identidade. Essas informações aparecerão em cada commit.

Definir nome e e-mail globais
git config –global user.name “Seu Nome” git config –global user.email “email@exemplo.com”
Definir editor padrão
git config –global core.editor “code –wait”
Listar todas as configurações
git config –list
02

Repositório Local

O ciclo básico de trabalho: criar, modificar, preparar (stage) e salvar (commit).

Criar e inicializar

Inicializar um novo repositório
git init
Clonar um repositório existente
git clone https://github.com/user/repo.git

Staging & Commit

Verificar o estado dos arquivos
git status
Adicionar arquivos ao stage
git add arquivo.txt # arquivo específico git add . # todos os arquivos modificados git add -p # selecionar trechos interativamente
Criar um commit
git commit -m “feat: adicionar login com OAuth”
Alterar o último commit
git commit –amend -m “nova mensagem”
⚠ Use apenas em commits que não foram enviados ao remoto.

Desfazer alterações

Remover do stage (manter mudanças)
git restore –staged arquivo.txt
Descartar mudanças no working directory
git restore arquivo.txt
Reverter um commit (criando um novo commit)
git revert abc1234
Resetar para um commit anterior
git reset –soft HEAD~1 # mantém stage e working dir git reset –mixed HEAD~1 # mantém working dir (padrão) git reset –hard HEAD~1 # descarta TUDO — cuidado!
⚠ Atenção com git reset --hard Esse comando apaga permanentemente as alterações não commitadas. Sempre verifique com git status antes de executar.
03

Repositório Remoto

Conectar, sincronizar e colaborar com repositórios remotos (GitHub, GitLab, Bitbucket, etc.).

Listar remotos configurados
git remote -v
Adicionar um remote
git remote add origin https://github.com/user/repo.git
Alterar URL do remote
git remote set-url origin nova-url.git
Baixar atualizações (sem merge)
git fetch origin
Baixar e integrar (fetch + merge)
git pull origin main
Enviar commits para o remoto
git push origin main git push -u origin feature/login # definir upstream na primeira vez
Enviar tags para o remoto
git push origin –tags
💡 Dica: git fetch vs git pull Use git fetch para ver o que mudou antes de integrar. git pull é um atalho para fetch + merge. Para um pull mais limpo, use git pull --rebase.
04

Branches

Branches permitem trabalhar em funcionalidades isoladas sem afetar a linha principal de código.

Listar branches
git branch # locais git branch -a # locais + remotas
Criar e trocar para nova branch
git switch -c feature/nova-tela # equivalente antigo: git checkout -b feature/nova-tela
Trocar de branch
git switch main
Renomear branch atual
git branch -m novo-nome
Deletar branch
git branch -d feature/antiga # segura (só se já fez merge) git branch -D feature/antiga # forçada
05

Merge vs Rebase

Duas formas de integrar alterações entre branches — cada uma com suas vantagens.

Git Merge

Cria um commit de merge que une as duas linhas de desenvolvimento. Preserva o histórico completo.

Merge de uma branch na atual
git switch main git merge feature/login
Merge sem fast-forward (sempre cria commit de merge)
git merge –no-ff feature/login
Abortar merge em caso de conflito
git merge –abort

Git Rebase

Reaplica seus commits por cima da branch de destino, resultando em um histórico linear e mais limpo.

Rebase da branch atual sobre main
git switch feature/login git rebase main
Rebase interativo (editar, combinar, reordenar commits)
git rebase -i HEAD~3
Resolver conflito e continuar rebase
# editar o(s) arquivo(s) com conflito, depois: git add . git rebase –continue
Abortar rebase
git rebase –abort
Aspecto Merge Rebase
Histórico Preserva todas as ramificações (não-linear) Cria um histórico linear e limpo
Commit extra Sim — cria commit de merge Não — reaplica os commits existentes
Segurança Seguro — nunca reescreve histórico Reescreve histórico — não usar em branches públicas
Quando usar Integrar branches compartilhadas (main) Atualizar branches locais/feature
🔶 Regra de ouro do Rebase Nunca faça rebase de uma branch pública/compartilhada. Se outros desenvolvedores já se basearam naqueles commits, o rebase vai reescrever os hashes e causar conflitos sérios.
06

Stash

Salve mudanças temporariamente quando precisar trocar de branch sem fazer commit.

Guardar mudanças no stash
git stash git stash -m “WIP: ajuste no header”
Listar stashes salvos
git stash list
Recuperar último stash
git stash pop # aplica e remove do stash git stash apply # aplica mas mantém no stash
Limpar stash
git stash drop stash@{0} # remove um específico git stash clear # remove todos
07

Log & Histórico

Histórico de commits
git log # completo git log –oneline # resumido git log –oneline –graph –all # gráfico de branches
Ver diferenças
git diff # mudanças no working dir git diff –staged # mudanças no stage git diff main..feature # entre branches
Quem alterou cada linha
git blame arquivo.txt
Buscar no histórico
git log –grep=“login” # buscar em mensagens de commit git log -S “funcaoX” # buscar mudanças no código
08

Git Workflow

O fluxo mais comum em equipes profissionais é o Git Flow (ou variações dele). Abaixo, as branches e seus propósitos:

Branch Propósito Criada a partir de
main Código em produção, sempre estável
develop Integração de features, base para o próximo release main
feature/* Desenvolvimento de funcionalidades novas develop
release/* Preparação para release (bugfixes finais, versão) develop
hotfix/* Correções urgentes em produção main

Fluxo de uma Feature

feature/*
commits
PR / Code Review
merge → develop
Fluxo prático de uma feature
# 1. Criar branch a partir de develop git switch develop git pull origin develop git switch -c feature/carrinho # 2. Trabalhar, commitar git add . git commit -m “feat: adicionar componente de carrinho” # 3. Atualizar com develop (rebase para histórico limpo) git fetch origin git rebase origin/develop # 4. Enviar e abrir Pull Request git push -u origin feature/carrinho
💡 Alternativas ao Git Flow Para projetos menores ou com deploys contínuos, considere o GitHub Flow (branches de feature diretamente de main) ou o Trunk-Based Development (commits pequenos e frequentes direto na main com feature flags).
09

Conventional Commits

Uma convenção para mensagens de commit que facilita changelogs automáticos, versionamento semântico e comunicação clara entre o time.

Estrutura da mensagem

<tipo>(escopo opcional): descrição curta # Corpo (opcional) — explica O QUÊ e POR QUÊ # Rodapé (opcional) — BREAKING CHANGE, referências

Tipos principais

feat
Nova funcionalidade para o usuário
fix
Correção de bug
docs
Alteração apenas em documentação
style
Formatação, ponto e vírgula, espaços (sem mudar lógica)
refactor
Refatoração sem alterar comportamento
test
Adicionar ou corrigir testes
chore
Tarefas de build, CI, dependências
perf
Melhoria de performance

Exemplos práticos

Feature simples
feat(auth): adicionar login com Google OAuth
Correção com escopo
fix(cart): corrigir cálculo do frete para região Sul
Breaking change
feat(api)!: migrar endpoints para v2 BREAKING CHANGE: rotas /api/v1/* foram removidas. Use /api/v2/* com o novo formato de autenticação.
Referência a issue
fix(ui): corrigir overflow no menu mobile Closes #142
💡 Ferramentas úteis Use commitlint + husky para validar mensagens automaticamente, e standard-version ou semantic-release para gerar changelogs e bumps de versão a partir dos commits.

Guia de Referência Git – by J. L. Gregório