Workshop de Git

avançado

William Grasel

@willgmbr

Git loves Ponteiros

Ponteiros, everywhere!

Ponteiros do Git

  • Commits
  • Branchs
  • HEAD

Voltando no Tempo

  • git checkout e0162b6~5
  • git checkout my-branch~3
  • git checkout HEAD~1

O que é um commit?

Entranhas dos Commits:

  • Hash ID
  • Arquivos
  • Ponteiro para o Hash Anterior

Git Workflows

Centralized Workflow

(Trunk Based)

Feature Branch Workflow

Gitflow Workflow

Fork Workflow

Local Workflow

Padronização de Mensagens de Commit

Semantic Versioning

X.Y.Z

E se o SemVer fosse gerado automaticamente?

Mensagem de commit ao resgate!

Você não precisa decorar:

Merge x Rebase

Por que eu não gosto de merge:

Commit Atômico

Não necessariamente é pequeno

Só tem o necessário, sem surpresinhas...

É mais fácil de revisar

É mais fácil de reverter

Linus Torvalds approves 

Só que as vezes precisamos fazer umas cirurgias nos commits!

Rebase Interativo ao resgate!

Rebase Interativo

pick 71a72e8 feat(case-666): terceiro exercicio do workshop
squash 70a1d0c WIP: corrigindo descrição do exercicio
pick 85e0122 feat(novo-arquivo): arquivo para dificultar sua vida

# Rebase 310c80e..70a1d0c onto 310c80e (3 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit

Configurando git com o vscode:

git config --global core.editor "code --wait"

Vamos por a mão na massa!

Bibliografia

Workshop de Git Avançado

By William Grasel

Workshop de Git Avançado

  • 2,058