Git Cheat Sheat - Definitivo!

J

Jackson Emmerich

Guest

Configuração Inicial​

Configurar um nome e email​


Code:
$ git config --global user.name "Danny Adams"
$ git config --global user.email "[email protected]"
Configure o nome e email que serão anexados aos seus commits e tags.

Iniciando um projeto​

Criar um repositório local​


Code:
$ git init <directory>
Crie um repositório local (omitindo o diretório atual para inicializar o diretório atual como um repositório Git).

Clonar um repositório remoto​


Code:
$ git clone <url>
Baixe um repositório remoto.

Adicionando as mudanças​

Adicionar um arquivo ao staging​


Code:
$ git add <file>
Adicione um arquivo ao área de preparação (staging).

Adicionar todos os arquivos ao staging​


Code:
$ git add .
Stage todos os arquivos modificados.

Commitar arquivos stageados​


Code:
$ git commit -m "commit message"
Commitar todos os arquivos stageados.

Adicionar mudanças a arquivos já rastreados e fazer commit​


Code:
$ git commit -am "commit message"
Adicione todas as alterações feitas em arquivos rastreados e faça um commit.

Conceitos Básicos​

  • main: branch de desenvolvimento padrão
  • origin: repositório upstream padrão
  • HEAD: branch atual
  • HEAD^: pai do HEAD
  • HEAD~4: quatro gerações acima do HEAD
  • grandparent of HEAD: avô do HEAD

Branches​

Listar branches locais​


Code:
$ git branch
Liste todos os branches locais. Use -r para listar branches remotos, -a para mostrar ambos.

Criar um novo branch​


Code:
$ git branch <new-branch>
Crie um novo branch.

Mudar para um branch e atualizar o diretório​


Code:
$ git checkout <branch>
Mude para um branch e atualize o diretório de trabalho.

Criar e mudar para um novo branch​


Code:
$ git checkout -b <new-branch>
Crie um novo branch e mude para ele.

Deletar um branch mesclado​


Code:
$ git branch -d <branch>
Delete um branch que já foi mesclado.

Deletar um branch (mesclado ou não)​


Code:
$ git branch -D <branch>
Delete um branch, independentemente de estar mesclado ou não.

Adicionar uma tag ao commit atual​


Code:
$ git tag <tag-name>
Adicione uma tag ao commit atual (frequentemente usado para versões de lançamento).

Merging - Mesclando​

Mesclar branch a em b


Code:
$ git checkout b
$ git merge a
Mesclar o branch a no branch b. Adicione --no-ff para evitar merge fast-forward.

A opção --no-ff (no fast-forward) é usada durante o merge para evitar o merge fast-forward. Vou explicar melhor:

O que é um merge fast-forward?​


Quando você faz um merge normal e o branch atual (destino) não tem commits novos desde que o branch sendo mesclado (origem) foi criado, o Git simplesmente move o ponteiro do branch atual para frente, até o último commit do branch de origem. Isso é chamado de "fast-forward" porque não cria um novo commit de merge.

Por que usar --no-ff?​


Ao usar a opção --no-ff, você força o Git a criar um commit de merge mesmo quando um merge fast-forward seria possível. Isso tem algumas vantagens:

  • Preserva o histórico de existência do branch de feature, criando um registro explícito de que um merge aconteceu
  • Mantém todos os commits relacionados à feature agrupados visualmente em ferramentas gráficas como gitk ou no comando git log --graph
  • Facilita a reversão de todas as mudanças da feature de uma vez só (com um único revert)

Sem o --no-ff, o histórico fica linear e perde-se a informação visual de que aqueles commits pertenciam a um branch separado.

Exemplo visual:​


Com fast-forward (padrão):

A---B---C---D (main)

Com --no-ff:

A---B---C---D---E (main)

\ /

D'

No segundo caso, você mantém um registro claro de que houve um merge e que D' pertencia a um branch separado.

Mesclar e esmagar todos os commits em um único novo commit​


Code:
$ git merge --squash a
Mesclar e esmagar todos os commits em um único novo commit.

Rebasing​

Rebase um branch em main


Code:
$ git checkout feature
$ git rebase main
Rebase o branch feature sobre main para incorporar as novas alterações feitas em main. Evita merges desnecessários, mantendo o histórico limpo.

Rebase interativo dos últimos 3 commits​


Code:
$ git rebase -i HEAD~3
Rebase interativo dos últimos 3 commits no branch atual.

Desfazendo coisas​

Mover/renomear um arquivo e stage​


Code:
$ git mv <existing_path> <new_path>
Move (ou renomeia) um arquivo e o adiciona ao staging.

Remover um arquivo do diretório de trabalho e staging​


Code:
$ git rm <file>
Remove um arquivo do diretório de trabalho e área de staging, então stage a remoção.

Remover apenas do staging​


Code:
$ git rm --cached <file>
Remove apenas do área de staging.

Ver um commit anterior (leitura apenas)​


Code:
$ git checkout <commit_ID>
Visualize um commit anterior (modo de leitura).

Criar um novo commit revertendo mudanças​


Code:
$ git revert <commit_ID>
Crie um novo commit que reverte as mudanças de um commit específico.

Voltar a um commit anterior e deletar commits posteriores​


Code:
$ git reset <commit_ID>
Volte a um commit anterior e delete todos os commits após ele (revert é mais seguro). Use --hard para apagar mudanças no workspace (SEJA MUITO CUIDADOSO!).

Revise seu repositório​

Listar arquivos novos ou modificados ainda não commitados​


Code:
$ git status
Liste arquivos novos ou modificados que ainda não foram commitados.

Mostrar histórico de commits com IDs​


Code:
$ git log --oneline
Mostre o histórico de commits com respectivos IDs.

Mostrar alterações em arquivos não stageados​


Code:
$ git diff
Mostre as alterações em arquivos não stageados. Para arquivos stageados, use --cached.

Mostrar diferenças entre dois commits​


Code:
$ git diff commit1_ID commit2_ID
Mostre as diferenças entre dois commits.

Stashing​

Armazenar mudanças modificadas e stageadas​


Code:
$ git stash
Armazene mudanças modificadas e stageadas. Use -u para incluir arquivos não rastreados. Use -a para arquivos não rastreados e ignorados.

Armazenar com comentário​


Code:
$ git stash save "comment"
Como acima, mas adicione um comentário.

Armazenar parcialmente (um arquivo ou parte de um)​


Code:
$ git stash -p
Armazene parcialmente: apenas um arquivo, coleção de arquivos ou mudanças individuais dentro de arquivos.

Listar todos os stashes​


Code:
$ git stash list
Liste todos os stashes.

Re-aplicar o stash sem excluí-lo​


Code:
$ git stash apply
Reaplique o stash sem excluí-lo.

Re-aplicar o stash em índice 2 e excluí-lo​


Code:
$ git stash pop stash@{2}
Reaplique o stash no índice 2, então exclua-o do stash. Use stash@{n} para pular o último stash.

Mostrar resumo das diferenças do stash 1​


Code:
$ git stash show stash@{1}
Mostre o resumo das diferenças do stash 1. Use -p para ver a diferença completa.

Sincronizando​

Adicionar um repositório remoto​


Code:
$ git remote add <alias> <url>
Adicione um repositório remoto.

Ver conexões remotas​


Code:
$ git remote
Liste todas as conexões remotas. Use -v para ver URLs.

Remover uma conexão remota​


Code:
$ git remote remove <alias>
Remova uma conexão remota.

Renomear uma conexão remota​


Code:
$ git remote rename <old> <new>
Renomeie uma conexão remota.

Buscar todos os branches do repositório remoto​


Code:
$ git fetch <alias>
Busque todos os branches do repositório remoto (sem merge).

Buscar um branch específico​


Code:
$ git fetch <alias> <branch>
Busque um branch específico.

Buscar cópia do repositório remoto​


Code:
$ git pull
Busque a cópia do repositório remoto, então faça merge.

Atualizar com rebase (histórico limpo)​


Code:
$ git pull --rebase <alias>
Faça um rebase das suas mudanças locais sobre as novas mudanças feitas no repositório remoto (para histórico limpo e linear).

Enviar conteúdo local para repositório remoto​


Code:
$ git push <alias>
Envie o conteúdo local para o repositório remoto.

Enviar para um branch específico​


Code:
$ git push <alias> <branch>
Envie para um branch específico (depois pode fazer pull novamente).

✅ Este cheat sheet foi criado para ajudar desenvolvedores a lembrarem rapidamente dos comandos essenciais do Git.

Continue reading...
 


Join 𝕋𝕄𝕋 on Telegram
Channel PREVIEW:
Back
Top