Git Cheat Sheet - Guia Completo de Comandos
- #GitHub
- #Git
O Git é o sistema de controle de versão mais utilizado no mundo, essencial para desenvolvedores que trabalham em projetos individuais ou em equipe. Ele permite rastrear mudanças no código, colaborar com outros desenvolvedores e manter um histórico completo do projeto.
Este cheat sheet foi criado para ser sua referência rápida, reunindo desde comandos básicos até operações avançadas. Seja você um iniciante dando seus primeiros passos ou um desenvolvedor experiente que precisa relembrar um comando específico, aqui você encontrará o que precisa.
Como usar este guia:
- Utilize o índice de seções para navegar rapidamente
- Os exemplos incluem a sintaxe exata de cada comando
- Comandos marcados com "CUIDADO!" podem causar perda de dados se usados incorretamente
- Consulte as dicas ao final para boas práticas
Agora, vamos aos comandos!
Configuração Inicial:
Configurar Identidade
git config --global user.name "Seu Nome"
git config --global user.email "seu@email.com"
Verificar Configurações
git config --list
git config user.name
git config user.email
Configurações Úteis
git config --global core.editor "code" # Define editor padrão
git config --global init.defaultBranch main # Define branch padrão
git config --global color.ui auto # Habilita cores
Criando Repositórios
git init # Inicializa novo repositório
git init nome-do-projeto # Cria diretório e inicializa
git clone <url> # Clona repositório remoto
git clone <url> nome-pasta # Clona em pasta específica
Trabalhando com Arquivos:
Verificar Status
git status # Status completo
git status -s # Status resumido
git status -sb # Status com branch
Adicionar Arquivos
git add arquivo.txt # Adiciona arquivo específico
git add . # Adiciona todos os arquivos
git add *.js # Adiciona por extensão
git add pasta/ # Adiciona pasta inteira
git add -A # Adiciona tudo (inclusive exclusões)
git add -p # Adiciona interativamente
Remover Arquivos
git rm arquivo.txt # Remove arquivo
git rm -r pasta/ # Remove pasta
git rm --cached arquivo.txt # Remove do stage, mantém no disco
git rm -f arquivo.txt # Força remoção
Mover/Renomear Arquivos
git mv arquivo-antigo.txt arquivo-novo.txt
Commits:
Criar Commits
git commit -m "Mensagem do commit"
git commit -am "Mensagem" # Add + commit (apenas arquivos rastreados)
git commit --amend # Modifica último commit
git commit --amend -m "Nova mensagem" # Altera mensagem do último commit
git commit --amend --no-edit # Adiciona ao último commit sem alterar mensagem
Visualizar Commits
git log # Histórico completo
git log --oneline # Uma linha por commit
git log --graph # Visualização gráfica
git log --all --graph --decorate --oneline # Log visual completo
git log -n 5 # Últimos 5 commits
git log --author="Nome" # Commits de autor específico
git log --since="2 weeks ago" # Commits recentes
git log --until="2024-01-01" # Commits até data
git log --grep="palavra" # Busca em mensagens
git log arquivo.txt # Histórico de arquivo específico
git log -p # Mostra diferenças em cada commit
git log --stat # Estatísticas de mudanças
Mostrar Commits
git show # Mostra último commit
git show <hash> # Mostra commit específico
git show HEAD~2 # Mostra commit 2 posições antes
Branches (Ramificações):
Criar e Listar
git branch # Lista branches locais
git branch -a # Lista todas as branches (local + remoto)
git branch -r # Lista branches remotas
git branch nome-branch # Cria nova branch
git branch -d nome-branch # Deleta branch (seguro)
git branch -D nome-branch # Força deleção de branch
git branch -m novo-nome # Renomeia branch atual
git branch -m antigo novo # Renomeia branch específica
Trocar de Branch
git checkout nome-branch # Troca para branch existente
git checkout -b nova-branch # Cria e troca para nova branch
git checkout -b branch origin/branch # Cria branch local a partir de remota
git switch nome-branch # Troca de branch (comando moderno)
git switch -c nova-branch # Cria e troca (comando moderno)
Merge (Mesclar)
git merge nome-branch # Mescla branch na atual
git merge --no-ff nome-branch # Merge sem fast-forward
git merge --squash nome-branch # Mescla com squash
git merge --abort # Cancela merge em conflito
Rebase
git rebase nome-branch # Reaplica commits sobre outra branch
git rebase -i HEAD~3 # Rebase interativo dos últimos 3 commits
git rebase --continue # Continua rebase após resolver conflitos
git rebase --abort # Cancela rebase
git rebase --skip # Pula commit no rebase
Repositórios Remotos:
Gerenciar Remotos
git remote # Lista remotos
git remote -v # Lista com URLs
git remote add origin <url> # Adiciona remoto
git remote remove origin # Remove remoto
git remote rename antigo novo # Renomeia remoto
git remote show origin # Detalhes do remoto
git remote set-url origin <nova-url> # Altera URL
Enviar (Push)
git push origin main # Envia para branch remota
git push # Envia para branch rastreada
git push -u origin main # Envia e configura upstream
git push --all # Envia todas as branches
git push --tags # Envia todas as tags
git push origin --delete nome-branch # Remove branch remota
git push -f # Força push (CUIDADO!)
Buscar (Fetch)
git fetch # Busca mudanças do remoto
git fetch origin # Busca de remoto específico
git fetch --all # Busca de todos os remotos
git fetch --prune # Remove referências de branches deletadas
Puxar (Pull)
git pull # Fetch + merge
git pull origin main # Pull de branch específica
git pull --rebase # Pull com rebase ao invés de merge
git pull --all # Pull de todas as branches
Desfazendo Mudanças:
Reverter Arquivos
git checkout -- arquivo.txt # Descarta mudanças não commitadas
git checkout . # Descarta todas as mudanças
git restore arquivo.txt # Restaura arquivo (comando moderno)
git restore --staged arquivo.txt # Remove do stage
Reset
git reset arquivo.txt # Remove arquivo do stage
git reset # Remove todos do stage
git reset --soft HEAD~1 # Desfaz commit, mantém mudanças no stage
git reset --mixed HEAD~1 # Desfaz commit, mudanças unstaged (padrão)
git reset --hard HEAD~1 # Desfaz commit e descarta mudanças (CUIDADO!)
git reset --hard origin/main # Reseta para estado remoto
Revert
git revert <hash> # Cria commit que desfaz outro commit
git revert HEAD # Reverte último commit
git revert --no-commit HEAD~3..HEAD # Reverte múltiplos commits
Clean
git clean -n # Mostra arquivos não rastreados que serão removidos
git clean -f # Remove arquivos não rastreados
git clean -fd # Remove arquivos e diretórios não rastreados
git clean -fx # Remove incluindo arquivos ignorados
Stash (Armazenar Temporariamente)
git stash # Salva mudanças temporariamente
git stash save "descrição" # Stash com descrição
git stash list # Lista stashes
git stash show # Mostra último stash
git stash show -p # Mostra diferenças do stash
git stash apply # Aplica último stash (mantém na lista)
git stash apply stash@{2} # Aplica stash específico
git stash pop # Aplica e remove último stash
git stash drop # Remove último stash
git stash drop stash@{1} # Remove stash específico
git stash clear # Remove todos os stashes
git stash branch nome-branch # Cria branch a partir de stash
Tags
git tag # Lista tags
git tag v1.0.0 # Cria tag leve
git tag -a v1.0.0 -m "Versão 1.0.0" # Cria tag anotada
git tag -a v1.0.0 <hash> # Tag em commit específico
git show v1.0.0 # Mostra detalhes da tag
git push origin v1.0.0 # Envia tag específica
git push origin --tags # Envia todas as tags
git tag -d v1.0.0 # Remove tag local
git push origin --delete v1.0.0 # Remove tag remota
git checkout v1.0.0 # Vai para tag específica
Diferenças (Diff)
git diff # Mudanças não staged
git diff --staged # Mudanças staged
git diff HEAD # Todas as mudanças
git diff branch1 branch2 # Diferença entre branches
git diff <hash1> <hash2> # Diferença entre commits
git diff --stat # Estatísticas de mudanças
git diff arquivo.txt # Diferenças em arquivo específico
Blame e Log Avançado
git blame arquivo.txt # Mostra quem modificou cada linha
git blame -L 10,20 arquivo.txt # Blame de linhas específicas
git log --follow arquivo.txt # Histórico incluindo renomeações
git log -S "texto" # Busca por conteúdo nos commits
git shortlog # Log agrupado por autor
git shortlog -sn # Contagem de commits por autor
Cherry Pick
git cherry-pick <hash> # Aplica commit específico na branch atual
git cherry-pick <hash1> <hash2> # Aplica múltiplos commits
git cherry-pick --continue # Continua após resolver conflitos
git cherry-pick --abort # Cancela cherry-pick
Bisect (Busca Binária)
git bisect start # Inicia busca
git bisect bad # Marca commit atual como ruim
git bisect good <hash> # Marca commit como bom
git bisect reset # Finaliza busca
Submódulos
git submodule add <url> pasta/ # Adiciona submódulo
git submodule init # Inicializa submódulos
git submodule update # Atualiza submódulos
git submodule update --init --recursive # Inicializa e atualiza recursivamente
git clone --recurse-submodules <url> # Clone com submódulos
Worktree
git worktree add ../path branch-name # Cria worktree
git worktree list # Lista worktrees
git worktree remove ../path # Remove worktree
git worktree prune # Limpa worktrees inválidos
Reflog
git reflog # Histórico de referências
git reflog show HEAD # Reflog da HEAD
git reset --hard HEAD@{2} # Restaura para estado anterior
Aliases Úteis
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual 'log --all --graph --decorate --oneline'
.gitignore
Crie um arquivo .gitignore
na raiz do projeto:
# Arquivos do sistema
.DS_Store
Thumbs.db
# Dependências
node_modules/
vendor/
# Ambiente
.env
.env.local
# Build
dist/
build/
*.log
# IDEs
.vscode/
.idea/
*.swp
Comandos de Ajuda
git help # Ajuda geral
git help comando # Ajuda de comando específico
git comando --help # Ajuda detalhada
git comando -h # Ajuda resumida
Dicas Importantes:
- Sempre faça pull antes de push para evitar conflitos
- Use branches para novas funcionalidades
- Commits pequenos e frequentes são melhores que commits grandes
- Escreva mensagens claras nos commits
- Nunca use
--force
em branches compartilhadas - Revise mudanças antes de commitar com
git diff
- Use
.gitignore
para não versionar arquivos desnecessários
Nota: Este cheat sheet cobre os comandos mais utilizados do Git. Para situações específicas, consulte a documentação oficial em git-scm.com