Referência de Comandos Git
Manual de referência completo de comandos Git, organizado por categoria para consulta rápida
Comandos Básicos(13)
Criar um novo repositório Git no diretório atual
Clonar um repositório remoto para local
Clone shallow, busca apenas o commit mais recente
Adicionar arquivo à área de staging
Adicionar todas as mudanças à área de staging
Fazer commit das alterações preparadas
Modificar o último commit
Mostrar status atual do repositório
Mostrar mudanças não staged
Mostrar mudanças staged
Mostrar toda configuração
Definir nome de usuário global
Definir email global
Gerenciamento de Branch(14)
Listar todas as branches locais
Listar todas as branches (incluindo remotas)
Criar uma nova branch
Deletar uma branch
Renomear uma branch
Mudar para uma branch
Criar e mudar para nova branch
Mudar para uma branch (Git 2.23+)
Criar e mudar para nova branch (Git 2.23+)
Merge branch especificada na branch atual
Merge com um merge commit
Rebase branch atual na branch especificada
Continuar rebase após resolver conflitos
Aplicar commit específico na branch atual
Operações Remotas(10)
Mostrar detalhes do repositório remoto
Adicionar um repositório remoto
Buscar conteúdo mais recente do remoto
Buscar atualizações de todos os remotos
Buscar e merge branch remota
Buscar e rebase
Push para repositório remoto
Forçar push (use com cuidado)
Push e definir branch upstream
Deletar branch remota
Desfazer Mudanças(8)
Unstage um arquivo
Desfazer último commit, manter mudanças
Desfazer commit e staging, manter working directory
Desfazer commit e descartar todas as mudanças
Desfazer um commit (cria novo commit)
Restaurar arquivo do working directory (Git 2.23+)
Unstage arquivo (Git 2.23+)
Remover arquivos e diretórios não rastreados
Gerenciamento de Tags(6)
Listar todas as tags
Criar uma tag lightweight
Criar uma tag annotated
Deletar tag local
Push tag para remoto
Push todas as tags para remoto
Ver Histórico(7)
Mostrar histórico de commits
Mostrar histórico de commits compacto
Mostrar histórico de todas as branches como graph
Mostrar detalhes do commit
Mostrar histórico de modificação para cada linha
Mostrar todo histórico de operações
Iniciar binary search para commit problemático
Stash(7)
Stash mudanças atuais
Stash mudanças com mensagem
Listar todos os stashes
Aplicar e drop o stash mais recente
Aplicar stash sem drop
Drop o stash mais recente
Remover todos os stashes
O que é Git?
Uma folha de referência Git é um guia rápido de comandos de controle de versão, organizado pela tarefa que você quer executar. Git é um sistema distribuído: cada clone contém o histórico do projeto, branches são ponteiros leves e commits registram como a base de código mudou ao longo do tempo. A referência ajuda quando você lembra o fluxo, mas não a sintaxe exata, como ver mudanças staged, criar branch, desfazer commit, guardar trabalho com stash, marcar uma release ou sincronizar com remoto. É uma referência, não substitui entender o estado do repositório. Comandos destrutivos como reset --hard, clean -fd, rebase e push forçado só devem ser copiados depois de revisar alterações não commitadas, branch atual e impacto remoto.
Guia de Uso
Referência Rápida
- Clique em qualquer cartão de comando para copiá-lo
- Use a caixa de busca para localizar comandos específicos rapidamente
- Clique nas tags de categoria para filtrar por tipo
- Passe o mouse sobre os comandos para ver descrições detalhadas
Recursos
Dicas Avançadas
- Use git restore --staged para tirar arquivos do stage
- Use git commit --amend para modificar o último commit
- Use git stash para salvar temporariamente o progresso do trabalho
- Use git revert para desfazer commits já enviados
Casos de uso
Princípio técnico
Mudanças locais fluem por três áreas: o diretório de trabalho, o index (também chamado de staging area, armazenado em .git/index), e o banco de dados de objetos. git add registra hashes de blob no index, git commit congela o index em uma nova tree mais objeto de commit, e git checkout/switch atualiza o index e a working tree para um commit alvo. Merges se enquadram em duas categorias: fast-forward simplesmente avança o ponteiro da branch quando o alvo é um descendente direto, enquanto merges de três vias (estratégia recursiva ou ort) calculam um ancestral comum e constroem um merge commit com dois pais. git rebase reescreve o histórico reproduzindo commits um por um sobre uma nova base, produzindo novos SHAs.
A sincronização remota roda sobre o protocolo inteligente HTTPS, SSH, ou o protocolo depreciado git://, trocando arquivos pack gerados por compressão delta. Após um fetch, o Git armazena o snapshot sob refs/remotes/origin/* e o reflog sob .git/logs/ mantém um rastro de desfazer de 90 dias por padrão (gc.reflogExpire) para que mesmo reset --hard ou um rebase mal feito possam ser recuperados antes que a coleta de lixo poda objetos inalcançáveis.
- Modelo de objetos: blob, tree, commit, tag — endereçáveis por conteúdo via SHA-1 (ou SHA-256 desde 2.29), armazenados avulsos em .git/objects/xx/ ou empacotados em .git/objects/pack/*.pack
- Index/staging: .git/index é um arquivo binário mapeando caminho → hash do blob + informações de stat; git add o atualiza, git commit o congela em uma tree
- Refs e HEAD: refs/heads/<branch>, refs/remotes/<remote>/<branch>, refs/tags/<tag> são arquivos simples contendo um SHA; HEAD é uma referência simbólica para a branch atual
- Estratégias de merge: fast-forward quando o alvo é um descendente, caso contrário merge recursivo/ort de três vias usando a merge base; --no-ff força um merge commit
- Reescrita de rebase: git rebase reproduz commits sobre uma nova base produzindo novos SHAs, quebrando o histórico compartilhado se enviado — por isso --force-with-lease é preferido a --force
- Recuperação via reflog: .git/logs/HEAD e logs por referência retêm movimentos de ref por 90 dias (gc.reflogExpire); git reflog mais git reset restaura após operações destrutivas
- Transporte: HTTPS inteligente, SSH ou git:// negociam arquivos pack via o protocolo upload-pack/receive-pack; clones rasos usam --depth para limitar o histórico
Exemplos
Criar e mudar para um novo branch
git checkout -b feature/login # Cria e muda para um novo branchDesfazer alterações no diretório de trabalho
git restore filename # Restaura o arquivo para o último estado commitadoVer histórico de commits
git log --oneline --graph --all # Exibe graficamente o histórico de todos os branchesPerguntas frequentes
Como desfaço meu commit mais recente?
git reset --soft HEAD~1 mantém suas alterações no staging para você commitar de novo; git reset --mixed HEAD~1 mantém na working tree mas fora do staging; git reset --hard HEAD~1 descarta tudo. Se o commit já foi enviado, use git revert HEAD em vez disso, que cria um novo commit que desfaz a mudança sem reescrever o histórico.
Qual a diferença entre git pull e git fetch?
git fetch só baixa commits do remoto para suas refs locais — nunca mexe na sua branch de trabalho. git pull equivale a git fetch seguido de git merge (ou git rebase se --rebase estiver definido). Use fetch quando quiser inspecionar as mudanças do upstream antes de integrá-las.
Como descarto alterações locais em um arquivo?
git restore <arquivo> descarta edições não commitadas na working tree; git restore --staged <arquivo> tira o arquivo do staging sem perder o conteúdo; git checkout HEAD -- <arquivo> restaura a versão do último commit. Para arquivos não rastreados, use git clean -f ou -fd para também remover diretórios.
Quando devo usar rebase em vez de merge?
Rebase quando você quer um histórico linear numa branch privada de feature antes de fazer merge de volta. Merge ao integrar uma branch compartilhada onde preservar o histórico real do desenvolvimento importa. Nunca faça rebase em commits que já foram enviados para uma branch compartilhada, a menos que todos concordem — isso reescreve os SHAs e quebra os clones dos outros.
Como vejo o que está prestes a ser enviado?
git log @{u}.. mostra os commits da sua branch que não estão no upstream. git diff @{u} mostra o diff combinado. git status, comparado com origin (depois de um fetch), mostra a contagem de commits à frente/atrás.
Como recupero uma branch deletada ou um commit perdido?
git reflog lista todas as posições onde o HEAD esteve; encontre o SHA do commit que você perdeu e rode git checkout <sha> ou git branch <nome> <sha>. Entradas do reflog duram cerca de 90 dias por padrão antes da coleta de lixo, então faça isso logo depois do erro.
Qual o jeito mais seguro de emendar um commit?
git commit --amend permite editar a mensagem do commit mais recente ou adicionar arquivos esquecidos. Ele reescreve o SHA, então faça isso só em commits locais que ainda não foram enviados. Se precisar emendar um commit já enviado, use push com --force-with-lease (não --force) para evitar atropelar atualizações dos colegas.