Folha de referência Git
Uma referência Git pesquisável e imprimível — configuração, branches, merge, rebase, remotos, stash, tags e desfazer alterações. Grátis.
Configuração e config
10git config --global user.name "Jane Doe"
Define o nome associado aos seus commits
git config --global user.email "jane@example.com"
Define o e-mail associado aos seus commits
git config --global init.defaultBranch main
Faz novos repositórios começarem no branch "main"
git config --global core.editor "code --wait"
Usa o VS Code como editor padrão do Git
git config --global pull.rebase true
Faz rebase em vez de merge ao puxar
git config --global alias.co checkout
Cria um alias de atalho (git co)
git config --global --list
Lista todos os valores de configuração globais
git config user.email
Mostra o e-mail do repositório atual
git config --global color.ui auto
Ativa saída colorida na linha de comando
git help <command>
Abre a página de manual de um comando
Criar e clonar repositórios
9git init
Inicializa um novo repositório na pasta atual
git init my-project
Cria um novo repositório num novo diretório
git clone https://example.com/repo.git
Clona um repositório remoto via HTTPS
git clone git@example.com:user/repo.git
Clona um repositório remoto via SSH
git clone <url> my-dir
Clona para um nome de diretório específico
git clone --depth 1 <url>
Clone superficial só com o último commit
git clone --branch dev <url>
Clona e faz checkout de um branch específico
git clone --recurse-submodules <url>
Clona e inicializa todos os submódulos
git remote add origin <url>
Associa um remoto a um repositório local existente
Staging e commits
11git add file.txt
Adiciona um único ficheiro ao próximo commit
git add .
Adiciona todas as alterações do diretório atual
git add -A
Adiciona todas as alterações, incluindo exclusões
git add -p
Adiciona trechos selecionados interativamente
git commit -m "Add login form"
Faz commit das alterações em stage com mensagem
git commit -am "Fix typo"
Adiciona ficheiros rastreados e faz commit num só passo
git commit --amend
Edita o commit mais recente
git commit --amend --no-edit
Adiciona alterações em stage ao último commit
git rm file.txt
Remove um ficheiro e adiciona a exclusão ao stage
git mv old.txt new.txt
Renomeia ou move um ficheiro e adiciona ao stage
git reset file.txt
Tira do stage um ficheiro mantendo as alterações
Branches
10git branch
Lista todos os branches locais
git branch -a
Lista branches locais e de rastreamento remoto
git switch -c feature/login
Cria um novo branch e muda para ele
git switch main
Muda para um branch existente
git checkout -b hotfix
Forma clássica de criar e mudar de branch
git branch -m old-name new-name
Renomeia um branch
git branch -d feature/login
Apaga um branch local já mesclado
git branch -D feature/login
Força a exclusão de um branch local não mesclado
git push origin --delete feature/login
Apaga um branch no remoto
git switch -
Volta ao branch anterior
Merge e rebase
10git merge feature/login
Mescla um branch no atual
git merge --no-ff feature/login
Mescla criando sempre um commit de merge
git merge --squash feature/login
Combina um branch numa única alteração em stage
git merge --abort
Cancela um merge com conflitos
git rebase main
Reaplica os commits do branch atual sobre main
git rebase -i HEAD~3
Edita interativamente os últimos 3 commits
git rebase --continue
Retoma um rebase após resolver conflitos
git rebase --abort
Cancela um rebase em andamento
git cherry-pick <hash>
Aplica um único commit no branch atual
git mergetool
Abre uma ferramenta para resolver conflitos de merge
Remotos e sincronização
11git remote -v
Lista os remotos configurados e suas URLs
git remote add upstream <url>
Adiciona um segundo remoto chamado upstream
git remote set-url origin <url>
Altera a URL de um remoto existente
git fetch
Baixa alterações remotas sem mesclar
git fetch --all --prune
Faz fetch de todos os remotos e remove branches obsoletos
git pull
Faz fetch e integra alterações remotas
git pull --rebase
Faz pull e rebase dos commits locais por cima
git push
Envia commits locais para o remoto
git push -u origin main
Faz push e define o branch de rastreamento upstream
git push --force-with-lease
Força push com segurança sem sobrescrever os outros
git push origin --tags
Envia todas as tags locais para o remoto
Inspecionar e comparar
10git status
Mostra ficheiros em stage, fora de stage e não rastreados
git status -s
Mostra o status em formato curto e compacto
git diff
Mostra alterações fora de stage face ao índice
git diff --staged
Mostra alterações em stage para o próximo commit
git diff main..feature
Compara dois branches
git diff HEAD~1 HEAD
Compara o último commit com o seu pai
git show <hash>
Mostra os detalhes e o diff de um commit
git show HEAD:file.txt
Mostra um ficheiro como estava num commit
git log --stat
Mostra commits com resumos dos ficheiros alterados
git shortlog -sn
Conta commits agrupados por autor
Desfazer alterações
10git restore file.txt
Descarta alterações fora de stage num ficheiro
git restore --staged file.txt
Tira do stage um ficheiro mantendo as alterações
git restore --source=HEAD~1 file.txt
Restaura um ficheiro de um commit anterior
git checkout -- file.txt
Forma clássica de descartar alterações locais
git reset --soft HEAD~1
Desfaz o último commit, mantém alterações em stage
git reset --mixed HEAD~1
Desfaz o último commit, mantém alterações fora de stage
git reset --hard HEAD~1
Desfaz o último commit e descarta alterações
git revert <hash>
Cria um novo commit que reverte um commit
git clean -fd
Apaga ficheiros e diretórios não rastreados
git clean -nd
Pré-visualiza o que o clean removeria
Stash
10git stash
Guarda alterações não commitadas e limpa a árvore
git stash push -m "wip"
Guarda alterações com uma mensagem descritiva
git stash -u
Faz stash incluindo ficheiros não rastreados
git stash list
Lista todos os conjuntos de alterações em stash
git stash show -p
Mostra o diff do stash mais recente
git stash apply
Reaplica o stash mais recente e mantém-no
git stash pop
Reaplica o stash mais recente e remove-o
git stash apply stash@{2}
Reaplica um stash específico por índice
git stash drop stash@{0}
Apaga uma única entrada de stash
git stash clear
Apaga todas as entradas de stash
Tags
9git tag
Lista todas as tags
git tag v1.0.0
Cria uma tag leve em HEAD
git tag -a v1.0.0 -m "Release 1.0.0"
Cria uma tag anotada com mensagem
git tag -a v1.0.0 <hash>
Cria uma tag num commit passado específico
git show v1.0.0
Mostra os detalhes de uma tag
git push origin v1.0.0
Envia uma única tag para o remoto
git push origin --tags
Envia todas as tags locais para o remoto
git tag -d v1.0.0
Apaga uma tag localmente
git push origin --delete v1.0.0
Apaga uma tag no remoto
Logs e histórico
12git log
Mostra o histórico completo de commits
git log --oneline
Mostra um log compacto, uma linha por commit
git log --oneline --graph --all
Visualiza os branches como um grafo ASCII
git log -p
Mostra o histórico de commits com diffs
git log --author="Jane"
Filtra o histórico por autor
git log --since="2 weeks ago"
Filtra o histórico por intervalo de datas
git log --pretty=format:"%h %an %s"
Personaliza o formato de saída do log
git blame file.txt
Mostra quem alterou cada linha por último
git reflog
Mostra o histórico de onde HEAD esteve
git bisect start
Inicia uma busca binária por um commit defeituoso
git bisect good <hash>
Marca um commit como bom durante o bisect
git bisect bad
Marca o commit atual como defeituoso
Nenhuma entrada corresponde a “:q”.
Precisa de ajuda?
Encontrou um problema com esta ferramenta? Avise a nossa equipa.