Folha de consulta de comandos Git
Pratique comandos Git com laboratórios práticos
Use esta folha de consulta de comandos Git como referência rápida para tarefas diárias de controle de versão. Ela cobre configuração de repositório, staging, commits, branches, merges, rebases, remotes, stashes, histórico, comandos de desfazer e colaboração no GitHub.
Configuração e Inicialização de Repositório
Inicializar Repositório: git init
Cria um novo repositório Git no diretório atual.
# Inicializar novo repositório
git init
# Inicializar em novo diretório
git init project-name
# Inicializar repositório bare (sem diretório de trabalho)
git init --bare
# Usar diretório de template personalizado
git init --template=path
Clonar Repositório: git clone
Cria uma cópia local de um repositório remoto.
# Clonar via HTTPS
git clone https://github.com/user/repo.git
# Clonar via SSH
git clone git@github.com:user/repo.git
# Clonar com nome personalizado
git clone repo.git local-name
# Clonagem superficial (apenas o commit mais recente)
git clone --depth 1 repo.git
Configuração Global: git config
Configura informações do usuário e preferências globalmente.
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
git config --global init.defaultBranch main
# Visualizar todas as configurações
git config --list
Configuração Local: git config --local
Define a configuração específica do repositório.
# Definir apenas para o repositório atual
git config user.name "Project Name"
# E-mail específico do projeto
git config user.email "project@example.com"
Gerenciamento de Remotos: git remote
Gerencia conexões com repositórios remotos.
# Adicionar remoto
git remote add origin https://github.com/user/repo.git
# Listar todos os remotos com URLs
git remote -v
# Mostrar informações detalhadas do remoto
git remote show origin
# Renomear remoto
git remote rename origin upstream
# Remover remoto
git remote remove upstream
Armazenamento de Credenciais: git config credential
Armazena credenciais de autenticação para evitar login repetido.
# Cache por 15 minutos
git config --global credential.helper cache
# Armazenar permanentemente
git config --global credential.helper store
# Cache por 1 hora
git config --global credential.helper 'cache --timeout=3600'
Informações e Status do Repositório
Verificar Status: git status
Exibe o estado atual do diretório de trabalho e da área de staging.
# Informações de status completas
git status
# Formato de status curto
git status -s
# Formato legível por máquina
git status --porcelain
# Mostrar também arquivos ignorados
git status --ignored
Visualizar Diferenças: git diff
Mostra as alterações entre diferentes estados do seu repositório.
# Alterações no diretório de trabalho vs staging
git diff
# Alterações no staging vs último commit
git diff --staged
# Todas as alterações não confirmadas
git diff HEAD
# Alterações em um arquivo específico
git diff file.txt
Visualizar Histórico: git log
Exibe o histórico de commits e a linha do tempo do repositório.
# Histórico de commits completo
git log
# Formato condensado de uma linha
git log --oneline
# Mostrar os últimos 5 commits
git log -5
# Gráfico visual de branches
git log --graph --all
Staging e Confirmação de Alterações
Preparar Arquivos: git add
Adiciona alterações à área de staging para o próximo commit.
# Preparar arquivo específico
git add file.txt
# Preparar todas as alterações no diretório atual
git add .
# Preparar todas as alterações (incluindo exclusões)
git add -A
# Preparar todos os arquivos JavaScript
git add *.js
# Preparação interativa (modo patch)
git add -p
Confirmar Alterações: git commit
Salva as alterações preparadas no repositório com uma mensagem descritiva.
# Commit com mensagem
git commit -m "Add user authentication"
# Preparar e confirmar arquivos modificados
git commit -a -m "Update docs"
# Modificar o último commit
git commit --amend
# Modificar sem alterar a mensagem
git commit --no-edit --amend
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
git commit -m "message" faz?Despreparar Arquivos: git reset
Remove arquivos da área de staging ou desfaz commits.
# Despreparar arquivo específico
git reset file.txt
# Despreparar todos os arquivos
git reset
# Desfazer último commit, mantendo alterações preparadas
git reset --soft HEAD~1
# Desfazer último commit, descartando alterações
git reset --hard HEAD~1
Descartar Alterações: git checkout / git restore
Reverte alterações no diretório de trabalho para o estado do último commit.
# Descartar alterações no arquivo (sintaxe antiga)
git checkout -- file.txt
# Descartar alterações no arquivo (nova sintaxe)
git restore file.txt
# Despreparar arquivo (nova sintaxe)
git restore --staged file.txt
# Descartar todas as alterações não confirmadas
git checkout .
Operações de Branch
Listar Branches: git branch
Visualiza e gerencia branches do repositório.
# Listar branches locais
git branch
# Listar todos os branches (locais e remotos)
git branch -a
# Listar apenas branches remotos
git branch -r
# Mostrar último commit em cada branch
git branch -v
Criar e Mudar: git checkout / git switch
Cria novas branches e alterna entre elas.
# Criar e mudar para nova branch
git checkout -b feature-branch
# Criar e mudar (nova sintaxe)
git switch -c feature-branch
# Mudar para branch existente
git checkout main
# Mudar para branch existente (nova sintaxe)
git switch main
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
git checkout -b feature-branch faz?Mesclar Branches: git merge
Combina alterações de diferentes branches.
# Mesclar feature-branch na branch atual
git merge feature-branch
# Mesclagem forçada
git merge --no-ff feature-branch
# Agrupar commits antes de mesclar
git merge --squash feature-branch
Deletar Branches: git branch -d
Remove branches que não são mais necessárias.
# Deletar branch mesclada
git branch -d feature-branch
# Deletar branch não mesclada forçadamente
git branch -D feature-branch
# Deletar branch remota
git push origin --delete feature-branch
Operações de Repositório Remoto
Buscar Atualizações: git fetch
Baixa alterações do repositório remoto sem mesclar.
# Buscar do remoto padrão
git fetch
# Buscar de um remoto específico
git fetch origin
# Buscar de todos os remotos
git fetch --all
# Buscar branch específica
git fetch origin main
Puxar Alterações: git pull
Baixa e mescla alterações do repositório remoto.
# Puxar da branch de rastreamento
git pull
# Puxar de branch remota específica
git pull origin main
# Puxar com rebase em vez de merge
git pull --rebase
# Apenas fast-forward, sem commits de merge
git pull --ff-only
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
git fetch e git pull?Enviar Alterações: git push
Carrega commits locais para o repositório remoto.
# Enviar para a branch de rastreamento
git push
# Enviar para branch remota específica
git push origin main
# Enviar e configurar rastreamento upstream
git push -u origin feature
# Envio forçado seguro
git push --force-with-lease
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
git push -u origin feature faz?Rastrear Branches Remotas: git branch --track
Configura o rastreamento entre branches locais e remotas.
# Configurar rastreamento
git branch --set-upstream-to=origin/main main
# Rastrear branch remota
git checkout -b local-branch origin/remote-branch
Stashing e Armazenamento Temporário
Stash Alterações: git stash
Salva temporariamente alterações não confirmadas para uso posterior.
# Stash alterações atuais
git stash
# Stash com mensagem
git stash save "Work in progress on feature X"
# Incluir arquivos não rastreados
git stash -u
# Stash apenas alterações não preparadas
git stash --keep-index
Listar Stashes: git stash list
Visualiza todos os stashes salvos.
# Mostrar todos os stashes
git stash list
# Mostrar alterações no stash mais recente
git stash show
# Mostrar alterações em um stash específico
git stash show stash@{1}
Aplicar Stashes: git stash apply
Restaura alterações previamente salvas.
# Aplicar stash mais recente
git stash apply
# Aplicar stash específico
git stash apply stash@{1}
# Aplicar e remover o stash mais recente
git stash pop
# Deletar stash mais recente
git stash drop
# Criar branch a partir do stash
git stash branch new-branch stash@{1}
# Deletar todos os stashes
git stash clear
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
git stash apply e git stash pop?Análise de Histórico e Log
Visualizar Histórico de Commits: git log
Explore o histórico do repositório com várias opções de formatação.
# Histórico visual de branches
git log --oneline --graph --all
# Commits de um autor específico
git log --author="John Doe"
# Commits recentes
git log --since="2 weeks ago"
# Buscar mensagens de commit
git log --grep="bug fix"
Culpar e Anotar: git blame
Vê quem modificou cada linha de um arquivo pela última vez.
# Mostrar autoria linha por linha
git blame file.txt
# Blame em linhas específicas
git blame -L 10,20 file.txt
# Alternativa para blame
git annotate file.txt
Pesquisar Repositório: git grep
Pesquisa padrões de texto em todo o histórico do repositório.
# Pesquisar texto em arquivos rastreados
git grep "function"
# Pesquisar com números de linha
git grep -n "TODO"
# Pesquisar em arquivos preparados
git grep --cached "bug"
Mostrar Detalhes do Commit: git show
Exibe informações detalhadas sobre commits específicos.
# Mostrar detalhes do último commit
git show
# Mostrar commit anterior
git show HEAD~1
# Mostrar commit específico pelo hash
git show abc123
# Mostrar commit com estatísticas de arquivo
git show --stat
Desfazendo Alterações e Editando Histórico
Reverter Commits: git revert
Cria novos commits que desfazem alterações anteriores de forma segura.
# Reverter o último commit
git revert HEAD
# Reverter commit específico
git revert abc123
# Reverter intervalo de commits
git revert HEAD~3..HEAD
# Reverter sem commit automático
git revert --no-commit abc123
Resetar Histórico: git reset
Move o ponteiro da branch e opcionalmente modifica o diretório de trabalho.
# Desfazer commit, manter alterações preparadas
git reset --soft HEAD~1
# Desfazer commit e staging
git reset --mixed HEAD~1
# Desfazer commit, staging e diretório de trabalho
git reset --hard HEAD~1
Rebase Interativo: git rebase -i
Edita, reordena ou agrupa commits interativamente.
# Rebase interativo dos últimos 3 commits
git rebase -i HEAD~3
# Rebase da branch atual sobre main
git rebase -i main
# Continuar após resolver conflitos
git rebase --continue
# Cancelar operação de rebase
git rebase --abort
Cherry-pick: git cherry-pick
Aplica commits específicos de outras branches.
# Aplicar commit específico na branch atual
git cherry-pick abc123
# Aplicar intervalo de commits
git cherry-pick abc123..def456
# Cherry-pick sem confirmar
git cherry-pick -n abc123
Resolução de Conflitos
Conflitos de Merge: Processo de Resolução
Passos para resolver conflitos durante operações de merge.
# Verificar arquivos em conflito
git status
# Marcar conflito como resolvido
git add resolved-file.txt
# Completar o merge
git commit
# Cancelar merge e retornar ao estado anterior
git merge --abort
Ferramentas de Merge: git mergetool
Inicia ferramentas externas para ajudar a resolver conflitos visualmente.
# Iniciar ferramenta de merge padrão
git mergetool
# Definir ferramenta de merge padrão
git config --global merge.tool vimdiff
# Usar ferramenta específica para este merge
git mergetool --tool=meld
Marcadores de Conflito: Entendendo o Formato
Interpreta os marcadores de conflito do Git nos arquivos.
<<<<<<< HEAD
Conteúdo da branch atual
=======
Conteúdo da branch de entrada
>>>>>>> feature-branch
Após editar o arquivo para resolver:
git add conflicted-file.txt
git commit
Ferramentas de Diff: git difftool
Usa ferramentas externas de diff para melhor visualização de conflitos.
# Iniciar ferramenta de diff para alterações
git difftool
# Definir ferramenta de diff padrão
git config --global diff.tool vimdiff
Marcação e Lançamentos (Tagging)
Criar Tags: git tag
Marca commits específicos com rótulos de versão.
# Criar tag leve (lightweight)
git tag v1.0
# Criar tag anotada
git tag -a v1.0 -m "Version 1.0 release"
# Marcar commit específico
git tag -a v1.0 abc123
# Criar tag assinada
git tag -s v1.0
Listar e Mostrar Tags: git tag -l
Visualiza tags existentes e suas informações.
# Listar todas as tags
git tag
# Listar tags que correspondem ao padrão
git tag -l "v1.*"
# Mostrar detalhes da tag
git show v1.0
Enviar Tags: git push --tags
Compartilha tags com repositórios remotos.
# Enviar tag específica
git push origin v1.0
# Enviar todas as tags
git push --tags
# Enviar todas as tags para um remoto específico
git push origin --tags
Deletar Tags: git tag -d
Remove tags de repositórios locais e remotos.
# Deletar tag local
git tag -d v1.0
# Deletar tag remota
git push origin --delete tag v1.0
# Sintaxe alternativa para deletar
git push origin :refs/tags/v1.0
Configuração e Aliases do Git
Visualizar Configuração: git config --list
Exibe as configurações atuais do Git.
# Mostrar todas as configurações
git config --list
# Mostrar apenas configurações globais
git config --global --list
# Mostrar configurações específicas do repositório
git config --local --list
# Mostrar uma configuração específica
git config user.name
Criar Aliases: git config alias
Cria atalhos para comandos frequentemente usados.
# git st = git status
git config --global alias.st status
# git co = git checkout
git config --global alias.co checkout
# git br = git branch
git config --global alias.br branch
# git ci = git commit
git config --global alias.ci commit
Aliases Avançados: Comandos Complexos
Cria aliases para combinações complexas de comandos.
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.unstage "reset HEAD --"
git config --global alias.last "log -1 HEAD"
git config --global alias.visual "!gitk"
Configuração do Editor: git config core.editor
Define o editor de texto preferido para mensagens de commit e conflitos.
# VS Code
git config --global core.editor "code --wait"
# Vim
git config --global core.editor "vim"
# Nano
git config --global core.editor "nano"
Desempenho e Otimização
Manutenção do Repositório: git gc
Otimiza o desempenho e o armazenamento do repositório.
# Coleta de lixo padrão
git gc
# Otimização mais completa
git gc --aggressive
# Executar apenas se necessário
git gc --auto
# Verificar integridade do repositório
git fsck
Manipulação de Arquivos Grandes: git lfs
Gerencia eficientemente arquivos binários grandes com Git LFS.
# Instalar LFS no repositório
git lfs install
# Rastrear arquivos PDF com LFS
git lfs track "*.pdf"
# Listar arquivos rastreados por LFS
git lfs ls-files
# Migrar arquivos existentes
git lfs migrate import --include="*.zip"
Clonagens Rasas (Shallow Clones): Reduzindo o Tamanho do Repositório
Clona repositórios com histórico limitado para operações mais rápidas.
# Apenas o commit mais recente
git clone --depth 1 https://github.com/user/repo.git
# Últimos 10 commits
git clone --depth 10 repo.git
# Converter clone raso em completo
git fetch --unshallow
Sparse Checkout: Trabalhando com Subdiretórios
Faz checkout apenas de partes específicas de repositórios grandes.
git config core.sparseCheckout true
echo "src/*" > .git/info/sparse-checkout
# Aplicar sparse checkout
git read-tree -m -u HEAD
Instalação e Configuração do Git
Gerenciadores de Pacotes: apt, yum, brew
Instala o Git usando gerenciadores de pacotes do sistema.
# Ubuntu/Debian
sudo apt install git
# CentOS/RHEL
sudo yum install git
# macOS com Homebrew
brew install git
# Windows com winget
winget install Git.Git
Download e Instalação: Instaladores Oficiais
Use instaladores oficiais do Git para sua plataforma.
# Baixar de https://git-scm.com/downloads
# Verificar instalação
git --version
# Mostrar caminho do executável do Git
which git
Configuração Inicial: Identidade do Usuário
Configura sua identidade para commits.
git config --global user.name "Your Full Name"
git config --global user.email "your.email@example.com"
git config --global init.defaultBranch main
# Definir comportamento de merge
git config --global pull.rebase false
Fluxos de Trabalho e Melhores Práticas do Git
Fluxo de Branch de Recurso (Feature Branch Workflow)
Fluxo de trabalho padrão para desenvolvimento de recursos com branches isoladas.
# Começar da branch main
git checkout main
# Obter últimas alterações
git pull origin main
# Criar branch de recurso
git checkout -b feature/user-auth
# ... fazer alterações e commits ...
# Enviar branch de recurso
git push -u origin feature/user-auth
# ... criar pull request ...
Git Flow: Modelo Estruturado de Branching
Abordagem sistemática com branches dedicadas para diferentes propósitos.
# Inicializar Git Flow
git flow init
# Iniciar recurso
git flow feature start new-feature
# Finalizar recurso
git flow feature finish new-feature
# Iniciar branch de lançamento
git flow release start 1.0.0
Convenções de Mensagens de Commit
Seguir o formato de commit convencional para um histórico de projeto claro.
# Formato: <tipo>(<escopo>): <assunto>
git commit -m "feat(auth): add user login functionality"
git commit -m "fix(api): resolve null pointer exception"
git commit -m "docs(readme): update installation instructions"
git commit -m "refactor(utils): simplify date formatting"
Commits Atômicos: Melhores Práticas
Criar commits focados, de propósito único, para um histórico melhor.
# Preparar alterações interativamente
git add -p
# Alteração específica
git commit -m "Add validation to email field"
# Evitar: git commit -m "Fix stuff" # Muito vago
# Bom: git commit -m "Fix email validation regex pattern"
Solução de Problemas e Recuperação
Reflog: Ferramenta de Recuperação
Usar o log de referências do Git para recuperar commits perdidos.
# Mostrar log de referências
git reflog
# Mostrar movimentos do HEAD
git reflog show HEAD
# Recuperar commit perdido
git checkout abc123
# Criar branch a partir de commit perdido
git branch recovery-branch abc123
Repositório Corrompido: Reparo
Corrigir problemas de integridade e corrupção do repositório.
# Verificar integridade do repositório
git fsck --full
# Limpeza agressiva
git gc --aggressive --prune=now
# Reconstruir índice se corrompido
rm .git/index; git reset
Problemas de Autenticação
Resolver problemas comuns de autenticação e permissão.
# Usar token
git remote set-url origin https://token@github.com/user/repo.git
# Adicionar chave SSH ao agente
ssh-add ~/.ssh/id_rsa
# Gerenciador de credenciais do Windows
git config --global credential.helper manager-core
Problemas de Desempenho: Depuração
Identificar e resolver problemas de desempenho do repositório.
# Mostrar tamanho do repositório
git count-objects -vH
# Contar total de commits
git log --oneline | wc -l
# Contar branches
git for-each-ref --format='%(refname:short)' | wc -l