Git cheat sheet em português
Este Git cheat sheet reúne os comandos do dia a dia, branches, stash e 14 receitas para desfazer erros em uma página para imprimir, usando os comandos atuais (git switch e git restore) e as variantes seguras (--force-with-lease, reset --keep) sempre que há escolha.
Cabe em uma página: A4, Carta.
Git
Comandos do dia a dia, branches, stash e receitas para desfazer
Começar
- git initCria um repositório na pasta atual
- git clone <url>Copia um repositório remoto com todo o histórico
- git config --global user.name "Your Name"Nome gravado nos seus commits
- git config --global user.email you@example.comE-mail gravado nos seus commits
Dia a dia
- git statusArquivos alterados, preparados e não rastreados
- git add <path>Prepara um arquivo ou pasta para o próximo commit
- git add -pPrepara mudança por mudança, revisando cada trecho
- git commit -m "message"Grava as mudanças preparadas
- git diffMudanças ainda não preparadas
- git diff --stagedMudanças preparadas para o próximo commit (igual a --cached)
- git log --oneline --graph --allHistórico compacto de todos os branches
- git show <commit>Um commit: mensagem, autor e diff
- git pullBusca e integra o branch remoto de origem
- git pushEnvia seus commits para o branch remoto
- git fetch --pruneAtualiza os branches remotos e remove os apagados
Branches
- git branch -aLista branches locais e remotos
- git switch -c <branch>Cria um branch e muda para ele
- git switch <branch>Muda para um branch existente
- git switch -Volta para o branch anterior
- git merge <branch>Junta aquele branch ao branch atual
- git rebase mainReaplica seus commits em cima do main
- git push -u origin <branch>Publica um branch novo e passa a acompanhá-lo
- git branch -m <new-name>Renomeia o branch atual
- git branch -d <branch>Apaga um branch já integrado (-D força)
- git push origin --delete <branch>Apaga um branch no remoto
- git cherry-pick <commit>Copia um commit para o branch atual
Stash
- git stash -uGuarda as mudanças não commitadas, inclusive arquivos novos
- git stash listMudanças guardadas, a mais recente é stash@{0}
- git stash popReaplica o stash mais recente e o descarta
- git stash apply stash@{1}Reaplica um stash, mas mantém na lista
Desfazer
- Descartar edições de um arquivogit restore <file>As mudanças não commitadas somem de vez
- Tirar do stage, manter as ediçõesgit restore --staged <file>Desfaz o git add daquele arquivo
- Corrigir a mensagem do último commitgit commit --amend -m "new message"Só antes do push: o commit é substituído
- Pôr um arquivo esquecido no último commitgit add <file> git commit --amend --no-editMantém a mensagem como estava
- Desfazer o último commit, mudanças no stagegit reset --soft HEAD~1Arquivos e index intactos; só o commit sai
- Desfazer o último commit, mudanças fora do stagegit reset HEAD~1--mixed é o modo padrão
- Jogar fora o último commit e as mudançasgit reset --hard HEAD~1Também apaga trabalho não commitado; o reflog ainda acha o commit
- Desfazer um commit que já foi enviadogit revert <commit>Cria um commit novo que o anula; o histórico fica intacto
- Mover o último commit para um branch novogit branch <new> git reset --keep HEAD~1 git switch <new>--keep se recusa a rodar se fosse perder edições locais
- Recuperar um branch apagado ou commit perdidogit reflog git branch rescue <sha>O reflog lista todas as posições por onde o HEAD passou
- Trazer um arquivo de um commit antigogit restore --source=<commit> <file>Sobrescreve a cópia de trabalho do arquivo
- Parar um merge ou rebase que deu erradogit merge --abort git rebase --abortVolta ao estado de antes de começar
- Apagar arquivos não rastreadosgit clean -n git clean -fd-n lista o que sairia; -f apaga, -d inclui pastas
- Enviar depois de reescrever o históricogit push --force-with-leaseRecusa se o remoto mudou desde o seu último fetch
Investigar e marcar versões
- git log -p <file>Todas as mudanças de um arquivo, com diff
- git blame <file>Último commit e autor de cada linha
- git diff main...<branch>O que um branch mudou desde que saiu do main
- git tag -a v1.2.0 -m "v1.2.0"Tag anotada no commit atual
- git push origin v1.2.0Tags não vão junto com o branch no push
O que tem no guia
O bloco de desfazer é organizado pelo problema, e não pelo comando, porque ninguém lembra se precisa de reset, restore ou revert: a pessoa lembra que commitou no branch errado. Cada receita diz o que mantém e o que destrói, que é a parte que custa trabalho quando dá errado.
Cada opção do guia foi conferida na referência do git-scm.com e na saída de uso do Git 2.55, e as receitas de desfazer foram executadas num repositório de teste para confirmar o efeito na árvore de trabalho, no index e no branch.
Como imprimir em uma página
Escolha o papel acima do guia e clique em Imprimir / Salvar PDF. A página mede o guia na largura desse papel e ajusta a escala para ocupar uma folha, nunca abaixo de 7pt, e esconde o cabeçalho, o rodapé, os anúncios e os botões do site. A impressão sai sempre em preto no branco, seja qual for o tema da tela.
Na janela de impressão deixe a Escala em Padrão (100%) e as Margens em Padrão. Para gerar um PDF, escolha Salvar como PDF no destino. O Safari ignora o tamanho de papel que a página pede, então selecione o mesmo papel na janela dele.
Incorpore ou crie um link para este guia
Um link para esta página na sua documentação, wiki ou README é o melhor jeito de compartilhar: quem clicar sempre vê a versão atual e o botão de imprimir. Copie um destes:
<a href="https://www.arielton.com/pt/cheatsheets/git">Git cheat sheet em português para imprimir</a> por <a href="https://www.arielton.com/pt">Arielton Oberek</a>[Git cheat sheet em português para imprimir](https://www.arielton.com/pt/cheatsheets/git) por [Arielton Oberek](https://www.arielton.com/pt)Se a sua equipe quer o mesmo tratamento para uma API interna, uma CLI ou um guia de estilo, escreva para contact@arielton.com.
Perguntas frequentes
- Como desfazer o último commit no Git?
- git reset --soft HEAD~1 remove o commit e mantém as mudanças no stage, git reset HEAD~1 as mantém fora do stage e git reset --hard HEAD~1 as descarta. Se o commit já foi enviado, use git revert <commit> para não reescrever um histórico compartilhado.
- Qual a diferença entre git switch e git checkout?
- O git switch, criado no Git 2.23 junto com o git restore, só troca de branch, e o git restore só restaura arquivos. O git checkout faz as duas coisas, o que facilitava sobrescrever arquivos sem querer. O checkout continua funcionando; o guia usa os comandos novos.
- O git push --force-with-lease é seguro?
- Mais seguro que o --force: ele se recusa a sobrescrever o branch remoto se ele mudou desde o seu último fetch, então você não apaga commits de um colega sem perceber. Ainda assim reescreve o histórico, então use só em branches em que ninguém mais trabalha.
- Como recuperar um branch que apaguei?
- Rode git reflog, ache o último commit em que você estava naquele branch e recrie com git branch <nome> <sha>. Commits soltos continuam recuperáveis até a coleta de lixo removê-los, o que por padrão leva pelo menos 30 dias.
Revisado em por Arielton Oberek.