Skip to content

Latest commit

 

History

History
888 lines (666 loc) · 16.5 KB

File metadata and controls

888 lines (666 loc) · 16.5 KB

Git Cheat Sheet Português (Brasil)

Git Logo

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

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 list para 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á:

  1. Mesclar MEUFEATURE em 'develop'
  2. Remover o branch de feature
  3. 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á:

  1. Mesclar branch de release em 'master'
  2. Taggar o release
  3. Mesclar release de volta em 'develop'
  4. 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

Comandos Git Flow

🌊 Esquema do Git Flow

Esquema 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:

  1. Faça fork deste repositório
  2. Crie seu branch de feature (git checkout -b feature/FeatureIncrivel)
  3. Faça commit das suas mudanças (git commit -m 'Adicionar alguma FeatureIncrivel')
  4. Faça push para o branch (git push origin feature/FeatureIncrivel)
  5. 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!