Git Cheat Sheat – Definitivo!




Configuração Inicial



Configurar um nome e email


$ git config --global user.name "Danny Adams"
$ git config --global user.email "my-email@gmail.com"

Enter fullscreen mode

Exit fullscreen mode

Configure o nome e email que serão anexados aos seus commits e tags.



Iniciando um projeto



Criar um repositório local

$ git init 

Enter fullscreen mode

Exit fullscreen mode

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

$ git clone 

Enter fullscreen mode

Exit fullscreen mode

Baixe um repositório remoto.




Adicionando as mudanças



Adicionar um arquivo ao staging

$ git add 

Enter fullscreen mode

Exit fullscreen mode

Adicione um arquivo ao área de preparação (staging).



Adicionar todos os arquivos ao staging

$ git add .

Enter fullscreen mode

Exit fullscreen mode

Stage todos os arquivos modificados.



Commitar arquivos stageados

$ git commit -m "commit message"

Enter fullscreen mode

Exit fullscreen mode

Commitar todos os arquivos stageados.



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

$ git commit -am "commit message"

Enter fullscreen mode

Exit fullscreen mode

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

$ git branch

Enter fullscreen mode

Exit fullscreen mode

Liste todos os branches locais. Use -r para listar branches remotos, -a para mostrar ambos.



Criar um novo branch

$ git branch 

Enter fullscreen mode

Exit fullscreen mode

Crie um novo branch.



Mudar para um branch e atualizar o diretório

$ git checkout 

Enter fullscreen mode

Exit fullscreen mode

Mude para um branch e atualize o diretório de trabalho.



Criar e mudar para um novo branch

$ git checkout -b 

Enter fullscreen mode

Exit fullscreen mode

Crie um novo branch e mude para ele.



Deletar um branch mesclado

$ git branch -d 

Enter fullscreen mode

Exit fullscreen mode

Delete um branch que já foi mesclado.



Deletar um branch (mesclado ou não)

$ git branch -D 

Enter fullscreen mode

Exit fullscreen mode

Delete um branch, independentemente de estar mesclado ou não.



Adicionar uma tag ao commit atual

$ git tag 

Enter fullscreen mode

Exit fullscreen mode

Adicione uma tag ao commit atual (frequentemente usado para versões de lançamento).




Merging – Mesclando



Mesclar branch a em b

$ git checkout b
$ git merge a

Enter fullscreen mode

Exit fullscreen mode

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

$ git merge --squash a

Enter fullscreen mode

Exit fullscreen mode

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




Rebasing



Rebase um branch em main

$ git checkout feature
$ git rebase main

Enter fullscreen mode

Exit fullscreen mode

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

$ git rebase -i HEAD~3

Enter fullscreen mode

Exit fullscreen mode

Rebase interativo dos últimos 3 commits no branch atual.




Desfazendo coisas



Mover/renomear um arquivo e stage

$ git mv  

Enter fullscreen mode

Exit fullscreen mode

Move (ou renomeia) um arquivo e o adiciona ao staging.



Remover um arquivo do diretório de trabalho e staging

$ git rm 

Enter fullscreen mode

Exit fullscreen mode

Remove um arquivo do diretório de trabalho e área de staging, então stage a remoção.



Remover apenas do staging

$ git rm --cached 

Enter fullscreen mode

Exit fullscreen mode

Remove apenas do área de staging.



Ver um commit anterior (leitura apenas)

$ git checkout 

Enter fullscreen mode

Exit fullscreen mode

Visualize um commit anterior (modo de leitura).



Criar um novo commit revertendo mudanças

$ git revert 

Enter fullscreen mode

Exit fullscreen mode

Crie um novo commit que reverte as mudanças de um commit específico.



Voltar a um commit anterior e deletar commits posteriores

$ git reset 

Enter fullscreen mode

Exit fullscreen mode

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

$ git status

Enter fullscreen mode

Exit fullscreen mode

Liste arquivos novos ou modificados que ainda não foram commitados.



Mostrar histórico de commits com IDs

$ git log --oneline

Enter fullscreen mode

Exit fullscreen mode

Mostre o histórico de commits com respectivos IDs.



Mostrar alterações em arquivos não stageados

$ git diff

Enter fullscreen mode

Exit fullscreen mode

Mostre as alterações em arquivos não stageados. Para arquivos stageados, use –cached.



Mostrar diferenças entre dois commits

$ git diff commit1_ID commit2_ID

Enter fullscreen mode

Exit fullscreen mode

Mostre as diferenças entre dois commits.




Stashing



Armazenar mudanças modificadas e stageadas

$ git stash

Enter fullscreen mode

Exit fullscreen mode

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

$ git stash save "comment"

Enter fullscreen mode

Exit fullscreen mode

Como acima, mas adicione um comentário.



Armazenar parcialmente (um arquivo ou parte de um)

$ git stash -p

Enter fullscreen mode

Exit fullscreen mode

Armazene parcialmente: apenas um arquivo, coleção de arquivos ou mudanças individuais dentro de arquivos.



Listar todos os stashes

$ git stash list

Enter fullscreen mode

Exit fullscreen mode

Liste todos os stashes.



Re-aplicar o stash sem excluí-lo

$ git stash apply

Enter fullscreen mode

Exit fullscreen mode

Reaplique o stash sem excluí-lo.



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

$ git stash pop stash@{2}

Enter fullscreen mode

Exit fullscreen mode

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

$ git stash show stash@{1}

Enter fullscreen mode

Exit fullscreen mode

Mostre o resumo das diferenças do stash 1. Use -p para ver a diferença completa.




Sincronizando



Adicionar um repositório remoto

$ git remote add <alias> 

Enter fullscreen mode

Exit fullscreen mode

Adicione um repositório remoto.



Ver conexões remotas

$ git remote

Enter fullscreen mode

Exit fullscreen mode

Liste todas as conexões remotas. Use -v para ver URLs.



Remover uma conexão remota

$ git remote remove <alias>

Enter fullscreen mode

Exit fullscreen mode

Remova uma conexão remota.



Renomear uma conexão remota

$ git remote rename  

Enter fullscreen mode

Exit fullscreen mode

Renomeie uma conexão remota.



Buscar todos os branches do repositório remoto

$ git fetch <alias>

Enter fullscreen mode

Exit fullscreen mode

Busque todos os branches do repositório remoto (sem merge).



Buscar um branch específico

$ git fetch <alias> 

Enter fullscreen mode

Exit fullscreen mode

Busque um branch específico.



Buscar cópia do repositório remoto

$ git pull

Enter fullscreen mode

Exit fullscreen mode

Busque a cópia do repositório remoto, então faça merge.



Atualizar com rebase (histórico limpo)

$ git pull --rebase <alias>

Enter fullscreen mode

Exit fullscreen mode

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

$ git push <alias>

Enter fullscreen mode

Exit fullscreen mode

Envie o conteúdo local para o repositório remoto.



Enviar para um branch específico

$ git push <alias> 

Enter fullscreen mode

Exit fullscreen mode

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.



Source link

Leave a Reply

Your email address will not be published. Required fields are marked *