Git Cheat Sheet Português (Brasil)
July 8, 2025 · View on GitHub

Esta folha de dicas abrangente do Git ajuda você a dominar comandos Git sem memorizar tudo. Seja você iniciante ou desenvolvedor experiente, este guia fornece referência rápida para operações essenciais do Git.
Contribuições são bem-vindas! Sinta-se livre para:
- Corrigir erros gramaticais
- Adicionar novos comandos
- Traduzir para seu idioma
- Melhorar explicações
📋 Índice
- 🔧 Configuração
- ⚙️ Arquivos de Configuração
- 🆕 Criar Repositório
- 📝 Mudanças Locais
- 🔍 Buscar
- 📖 Histórico de Commits
- 📁 Mover / Renomear
- 🌿 Branches e Tags
- 🔄 Atualizar e Publicar
- 🔀 Merge e Rebase
- ↩️ Desfazer
- 🌊 Git Flow
- 📚 Recursos Adicionais
- 🌍 Outros Idiomas
- 🤝 Contribuir
- 📄 Licença
🔧 Configuração
Ver Configuração
Mostrar configuração atual:
git config --list
Mostrar configuração do repositório:
git config --local --list
Mostrar configuração global:
git config --global --list
Mostrar configuração do sistema:
git config --system --list
Configuração do Usuário
Definir seu nome para histórico de versões:
git config --global user.name "[nome sobrenome]"
Definir seu endereço de email:
git config --global user.email "[email-válido]"
Configurações de Exibição e Editor
Habilitar coloração automática da linha de comando:
git config --global color.ui auto
Definir editor global para commits:
git config --global core.editor vi
⚙️ Arquivos de Configuração
| Escopo | Localização | Flag do Comando |
|---|---|---|
| Repositório | <repo>/.git/config | --local |
| Usuário | ~/.gitconfig | --global |
| Sistema | /etc/gitconfig | --system |
🆕 Criar Repositório
Clonar Repositório Existente
Via SSH:
git clone ssh://usuario@dominio.com/repo.git
Via HTTPS:
git clone https://dominio.com/usuario/repo.git
Inicializar Novo Repositório
Criar repositório no diretório atual:
git init
Criar repositório em diretório específico:
git init <diretorio>
📝 Mudanças Locais
Verificar Status e Diferenças
Ver status do diretório de trabalho:
git status
Mostrar mudanças em arquivos rastreados:
git diff
Mostrar mudanças em arquivo específico:
git diff <arquivo>
Preparar Mudanças
Adicionar todas as mudanças atuais:
git add .
Adicionar arquivos específicos:
git add <arquivo1> <arquivo2>
Adicionar interativamente partes de um arquivo:
git add -p <arquivo>
Fazer Commit das Mudanças
Fazer commit de todas as mudanças de arquivos rastreados:
git commit -a
Fazer commit das mudanças preparadas:
git commit
Fazer commit com mensagem:
git commit -m 'mensagem aqui'
Pular preparação e fazer commit com mensagem:
git commit -am 'mensagem aqui'
Fazer commit com data específica:
git commit --date="`date --date='n day ago'`" -am "<Mensagem do Commit Aqui>"
Modificar Último Commit
⚠️ Aviso: Não modifique commits publicados!
Emendar último commit:
git commit -a --amend
Emendar sem alterar mensagem do commit:
git commit --amend --no-edit
Alterar data do committer:
GIT_COMMITTER_DATE="data" git commit --amend
Alterar data do autor:
git commit --amend --date="data"
Guardar Mudanças Temporariamente
Salvar mudanças atuais temporariamente:
git stash
Aplicar últimas mudanças salvas:
git stash apply
Aplicar stash específico:
git stash apply stash@{numero_stash}
Use
git stash listpara ver stashes disponíveis
Remover último stash:
git stash drop
Mover mudanças não commitadas para outro branch:
git stash
git checkout branch2
git stash pop
🔍 Buscar
Busca de Texto
Buscar texto em todos os arquivos:
git grep "Olá"
Buscar em versão específica:
git grep "Olá" v2.5
Busca de Commits
Encontrar commits que introduziram palavra-chave específica:
git log -S 'palavra-chave'
Buscar com expressão regular:
git log -S 'palavra-chave' --pickaxe-regex
📖 Histórico de Commits
Histórico Básico
Mostrar todos os commits (detalhado):
git log
Mostrar commits (uma linha cada):
git log --oneline
Mostrar commits por autor específico:
git log --author="nomeusuario"
Mostrar mudanças para arquivo específico:
git log -p <arquivo>
Histórico Avançado
Comparar branches:
git log --oneline <origin/master>..<remote/master> --left-right
Mostrar quem mudou o que e quando:
git blame <arquivo>
Logs de Referência
Mostrar log de referência:
git reflog show
Deletar log de referência:
git reflog delete
📁 Mover / Renomear
Renomear um arquivo:
git mv Index.txt Index.html
🌿 Branches e Tags
Listar Branches
Listar branches locais:
git branch
Listar todos os branches (local + remoto):
git branch -a
Listar branches remotos:
git branch -r
Listar branches mesclados:
git branch --merged
Trocar e Criar Branches
Trocar para branch existente:
git checkout <branch>
Criar e trocar para novo branch:
git checkout -b <branch>
Trocar para branch anterior:
git checkout -
Criar branch a partir de branch existente:
git checkout -b <novo_branch> <branch_existente>
Criar branch a partir de commit específico:
git checkout <hash-commit> -b <nome_novo_branch>
Criar branch sem trocar:
git branch <novo-branch>
Criar branch de rastreamento:
git branch --track <novo-branch> <branch-remoto>
Operações de Branch
Obter arquivo único de branch diferente:
git checkout <branch> -- <nomearquivo>
Aplicar commit específico de outro branch:
git cherry-pick <hash commit>
Renomear branch atual:
git branch -m <nome_novo_branch>
Deletar branch local:
git branch -d <branch>
Forçar deleção de branch local:
git branch -D <branch>
⚠️ Aviso: Você perderá mudanças não mescladas!
Tags
Criar tag no HEAD:
git tag <nome-tag>
Criar tag anotada:
git tag -a <nome-tag>
Criar tag com mensagem:
git tag <nome-tag> -am 'mensagem aqui'
Listar todas as tags:
git tag
Listar tags com mensagens:
git tag -n
🔄 Atualizar e Publicar
Gerenciamento de Remotos
Listar remotos configurados:
git remote -v
Mostrar informações do remoto:
git remote show <remoto>
Adicionar novo remoto:
git remote add <remoto> <url>
Renomear remoto:
git remote rename <remoto> <novo_remoto>
Remover remoto:
git remote rm <remoto>
ℹ️ Nota: Isso apenas remove a referência remota localmente, não o repositório remoto em si.
Fetch e Pull
Baixar mudanças sem mesclar:
git fetch <remoto>
Baixar e mesclar mudanças:
git pull <remoto> <branch>
Obter mudanças do branch principal:
git pull origin master
Pull com rebase:
git pull --rebase <remoto> <branch>
Push e Publicar
Publicar mudanças locais:
git push <remoto> <branch>
Deletar branch remoto:
# Git v1.7.0+
git push <remoto> --delete <branch>
# Git v1.5.0+
git push <remoto> :<branch>
Publicar tags:
git push --tags
🔀 Merge e Rebase
Operações de Merge
Mesclar branch no HEAD atual:
git merge <branch>
Configurar ferramenta de merge globalmente:
git config --global merge.tool meld
Usar ferramenta de merge configurada:
git mergetool
Operações de Rebase
⚠️ Aviso: Não faça rebase de commits publicados!
Fazer rebase do HEAD atual sobre branch:
git rebase <branch>
Abortar rebase:
git rebase --abort
Continuar rebase após resolver conflitos:
git rebase --continue
Resolução de Conflitos
Marcar arquivo como resolvido:
git add <arquivo-resolvido>
Remover arquivo resolvido:
git rm <arquivo-resolvido>
Squashing Commits
Rebase interativo para squashing:
git rebase -i <commit-logo-antes-do-primeiro>
Exemplo de configuração para squash:
# Antes
pick <commit_id>
pick <commit_id2>
pick <commit_id3>
# Depois (squash commit_id2 e commit_id3 em commit_id)
pick <commit_id>
squash <commit_id2>
squash <commit_id3>
↩️ Desfazer
Descartar Mudanças
Descartar todas as mudanças locais:
git reset --hard HEAD
Tirar todos os arquivos da área de staging:
git reset HEAD
Descartar mudanças em arquivo específico:
git checkout HEAD <arquivo>
Operações de Reset
Reset para commit anterior (descartar todas as mudanças):
git reset --hard <commit>
Reset para estado do branch remoto:
git reset --hard <remoto/branch>
# Exemplo: git reset --hard upstream/master
Reset preservando mudanças como não preparadas:
git reset <commit>
Reset preservando mudanças locais não commitadas:
git reset --keep <commit>
Reverter Commits
Reverter commit (criar novo commit com mudanças opostas):
git revert <commit>
Limpar Arquivos Ignorados
Remover arquivos acidentalmente commitados que deveriam ser ignorados:
git rm -r --cached .
git add .
git commit -m "remover arquivos ignorados"
🌊 Git Flow
Git-flow melhorado: git-flow-avh
📋 Índice
🔧 Configuração {#configuração-1}
Pré-requisito: Instalação do Git funcionando é necessária. Git-flow funciona no macOS, Linux e Windows.
macOS (Homebrew):
brew install git-flow-avh
macOS (MacPorts):
port install git-flow
Linux (baseado em Debian):
sudo apt-get install git-flow
Windows (Cygwin):
Requer wget e util-linux
wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install <state> | bash
🚀 Começando
Git-flow precisa de inicialização para personalizar a configuração do seu projeto.
Inicializar (interativo):
git flow init
Você responderá perguntas sobre convenções de nomenclatura de branches. Valores padrão são recomendados.
Inicializar (usar padrões):
git flow init -d
✨ Features
Features são para desenvolver nova funcionalidade para próximos releases. Tipicamente existem apenas em repositórios de desenvolvedores.
Iniciar novo feature:
git flow feature start MEUFEATURE
Cria branch de feature baseado em 'develop' e troca para ele
Finalizar feature:
git flow feature finish MEUFEATURE
Isso fará:
- Mesclar MEUFEATURE em 'develop'
- Remover o branch de feature
- Trocar de volta para 'develop'
Publicar feature (para colaboração):
git flow feature publish MEUFEATURE
Obter feature publicado:
git flow feature pull origin MEUFEATURE
Rastrear feature de origem:
git flow feature track MEUFEATURE
🎁 Fazer um Release
Releases suportam preparação de novos releases de produção, permitindo correções menores de bugs e preparando meta-dados.
Iniciar release:
git flow release start RELEASE [BASE]
Cria branch de release a partir de 'develop'. Opcionalmente especifique commit SHA-1 [BASE].
Publicar release:
git flow release publish RELEASE
Rastrear release remoto:
git flow release track RELEASE
Finalizar release:
git flow release finish RELEASE
Isso fará:
- Mesclar branch de release em 'master'
- Taggar o release
- Mesclar release de volta em 'develop'
- Remover branch de release
💡 Não esqueça: Envie suas tags com
git push --tags
🔥 Hotfixes
Hotfixes abordam problemas críticos em versões de produção ao vivo. Eles se ramificam da tag correspondente no master.
Iniciar hotfix:
git flow hotfix start VERSAO [NOMEBASE]
Finalizar hotfix:
git flow hotfix finish VERSAO
Mescla de volta em 'develop' e 'master', e tagga o merge do master
📊 Resumo de Comandos
🌊 Esquema do Git Flow
📚 Recursos Adicionais
Documentação Oficial e Guias
Materiais de Aprendizado Online
Ferramentas GUI
Tópicos Avançados
🌍 Outros Idiomas
Esta folha de dicas está disponível em múltiplos idiomas:
| Idioma | Link |
|---|---|
| 🇺🇸 Inglês | README.md |
| 🇸🇦 Árabe | git-cheat-sheet-ar.md |
| 🇧🇩 Bengali | git-cheat-sheet-bn.md |
| 🇨🇳 Chinês | git-cheat-sheet-zh.md |
| 🇩🇪 Alemão | git-cheat-sheet-de.md |
| 🇪🇸 Espanhol | git-cheat-sheet-es.md |
| 🇬🇷 Grego | git-cheat-sheet-el.md |
| 🇮🇳 Hindi | git-cheat-sheet-hi.md |
| 🇰🇷 Coreano | git-cheat-sheet-ko.md |
| 🇵🇱 Polonês | git-cheat-sheet-pl.md |
| 🇹🇷 Turco | git-cheat-sheet-tr.md |
🤝 Contribuir
Damos as boas-vindas a contribuições! Você pode:
- 🐛 Reportar bugs ou erros de digitação
- ✨ Adicionar novos comandos Git
- 🌍 Traduzir para novos idiomas
- 💡 Melhorar explicações
- 📝 Aprimorar formatação
Como contribuir:
- Faça fork deste repositório
- Crie seu branch de feature (
git checkout -b feature/FeatureIncrivel) - Faça commit das suas mudanças (
git commit -m 'Adicionar alguma FeatureIncrivel') - Faça push para o branch (
git push origin feature/FeatureIncrivel) - Abra um Pull Request
📄 Licença
Este projeto é código aberto e está disponível sob a Licença MIT.
⭐ Dê uma estrela neste repositório se foi útil!