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
- 🔧 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
Mostrar configuração atual:
git config --listMostrar configuração do repositório:
git config --local --listMostrar configuração global:
git config --global --listMostrar configuração do sistema:
git config --system --listDefinir 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]"Habilitar coloração automática da linha de comando:
git config --global color.ui autoDefinir editor global para commits:
git config --global core.editor vi| Escopo | Localização | Flag do Comando |
|---|---|---|
| Repositório | <repo>/.git/config |
--local |
| Usuário | ~/.gitconfig |
--global |
| Sistema | /etc/gitconfig |
--system |
Via SSH:
git clone ssh://usuario@dominio.com/repo.gitVia HTTPS:
git clone https://dominio.com/usuario/repo.gitCriar repositório no diretório atual:
git initCriar repositório em diretório específico:
git init <diretorio>Ver status do diretório de trabalho:
git statusMostrar mudanças em arquivos rastreados:
git diffMostrar mudanças em arquivo específico:
git diff <arquivo>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 de todas as mudanças de arquivos rastreados:
git commit -aFazer commit das mudanças preparadas:
git commitFazer 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>"
⚠️ Aviso: Não modifique commits publicados!
Emendar último commit:
git commit -a --amendEmendar sem alterar mensagem do commit:
git commit --amend --no-editAlterar data do committer:
GIT_COMMITTER_DATE="data" git commit --amendAlterar data do autor:
git commit --amend --date="data"Salvar mudanças atuais temporariamente:
git stashAplicar últimas mudanças salvas:
git stash applyAplicar stash específico:
git stash apply stash@{numero_stash}Use
git stash listpara ver stashes disponíveis
Remover último stash:
git stash dropMover mudanças não commitadas para outro branch:
git stash
git checkout branch2
git stash popBuscar texto em todos os arquivos:
git grep "Olá"Buscar em versão específica:
git grep "Olá" v2.5Encontrar commits que introduziram palavra-chave específica:
git log -S 'palavra-chave'Buscar com expressão regular:
git log -S 'palavra-chave' --pickaxe-regexMostrar todos os commits (detalhado):
git logMostrar commits (uma linha cada):
git log --onelineMostrar commits por autor específico:
git log --author="nomeusuario"Mostrar mudanças para arquivo específico:
git log -p <arquivo>Comparar branches:
git log --oneline <origin/master>..<remote/master> --left-rightMostrar quem mudou o que e quando:
git blame <arquivo>Mostrar log de referência:
git reflog showDeletar log de referência:
git reflog deleteRenomear um arquivo:
git mv Index.txt Index.htmlListar branches locais:
git branchListar todos os branches (local + remoto):
git branch -aListar branches remotos:
git branch -rListar branches mesclados:
git branch --mergedTrocar 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>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!
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 tagListar tags com mensagens:
git tag -nListar remotos configurados:
git remote -vMostrar 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.
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 masterPull com rebase:
git pull --rebase <remoto> <branch>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 --tagsMesclar branch no HEAD atual:
git merge <branch>Configurar ferramenta de merge globalmente:
git config --global merge.tool meldUsar ferramenta de merge configurada:
git mergetool
⚠️ Aviso: Não faça rebase de commits publicados!
Fazer rebase do HEAD atual sobre branch:
git rebase <branch>Abortar rebase:
git rebase --abortContinuar rebase após resolver conflitos:
git rebase --continueMarcar arquivo como resolvido:
git add <arquivo-resolvido>Remover arquivo resolvido:
git rm <arquivo-resolvido>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>
Descartar todas as mudanças locais:
git reset --hard HEADTirar todos os arquivos da área de staging:
git reset HEADDescartar mudanças em arquivo específico:
git checkout HEAD <arquivo>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/masterReset preservando mudanças como não preparadas:
git reset <commit>Reset preservando mudanças locais não commitadas:
git reset --keep <commit>Reverter commit (criar novo commit com mudanças opostas):
git revert <commit>Remover arquivos acidentalmente commitados que deveriam ser ignorados:
git rm -r --cached .
git add .
git commit -m "remover arquivos ignorados"Git-flow melhorado: git-flow-avh
Pré-requisito: Instalação do Git funcionando é necessária. Git-flow funciona no macOS, Linux e Windows.
macOS (Homebrew):
brew install git-flow-avhmacOS (MacPorts):
port install git-flowLinux (baseado em Debian):
sudo apt-get install git-flowWindows (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> | bashGit-flow precisa de inicialização para personalizar a configuração do seu projeto.
Inicializar (interativo):
git flow initVocê responderá perguntas sobre convenções de nomenclatura de branches. Valores padrão são recomendados.
Inicializar (usar padrões):
git flow init -dFeatures 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 MEUFEATURECria branch de feature baseado em 'develop' e troca para ele
Finalizar feature:
git flow feature finish MEUFEATUREIsso fará:
- Mesclar MEUFEATURE em 'develop'
- Remover o branch de feature
- Trocar de volta para 'develop'
Publicar feature (para colaboração):
git flow feature publish MEUFEATUREObter feature publicado:
git flow feature pull origin MEUFEATURERastrear feature de origem:
git flow feature track MEUFEATUREReleases 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 RELEASERastrear release remoto:
git flow release track RELEASEFinalizar release:
git flow release finish RELEASEIsso 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 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 VERSAOMescla de volta em 'develop' e 'master', e tagga o merge do master
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 |
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
Este projeto é código aberto e está disponível sob a Licença MIT.
⭐ Dê uma estrela neste repositório se foi útil!


