Download pdf - Desvendando O Git

Transcript
Page 1: Desvendando O Git

Desvendando o GITDouglas Campos (qmx)[email protected]

http://qmx.me

terça-feira, 21 de julho de 2009

Page 2: Desvendando O Git

terça-feira, 21 de julho de 2009

Page 3: Desvendando O Git

Sumário

terça-feira, 21 de julho de 2009

Page 4: Desvendando O Git

Introdução

Sumário

terça-feira, 21 de julho de 2009

Page 5: Desvendando O Git

Introdução

Mudando de Paradigma

Sumário

terça-feira, 21 de julho de 2009

Page 6: Desvendando O Git

Introdução

Mudando de Paradigma

Core GIT

Sumário

terça-feira, 21 de julho de 2009

Page 7: Desvendando O Git

Introdução

Mudando de Paradigma

Core GIT

Fluxos de Trabalho em Equipe

Sumário

terça-feira, 21 de julho de 2009

Page 8: Desvendando O Git

Introdução

Mudando de Paradigma

Core GIT

Fluxos de Trabalho em Equipe

Recuperação de Desastres

Sumário

terça-feira, 21 de julho de 2009

Page 9: Desvendando O Git

Introdução

Mudando de Paradigma

Core GIT

Fluxos de Trabalho em Equipe

Recuperação de Desastres

Boas Práticas

Sumário

terça-feira, 21 de julho de 2009

Page 10: Desvendando O Git

terça-feira, 21 de julho de 2009

Page 11: Desvendando O Git

Introdução

terça-feira, 21 de julho de 2009

Page 12: Desvendando O Git

Introdução

BK

terça-feira, 21 de julho de 2009

Page 13: Desvendando O Git

Introdução

BK

Torvalds

terça-feira, 21 de julho de 2009

Page 14: Desvendando O Git

Introdução

BK

Torvalds

Kernel

terça-feira, 21 de julho de 2009

Page 15: Desvendando O Git

Introdução

BK

Torvalds

Kernel

~45 dias do início à produção!

terça-feira, 21 de julho de 2009

Page 16: Desvendando O Git

Introdução

BK

Torvalds

Kernel

~45 dias do início à produção!

Performático

terça-feira, 21 de julho de 2009

Page 17: Desvendando O Git

CVCSHá um ponto central, onde tudo acontece

terça-feira, 21 de julho de 2009

Page 18: Desvendando O Git

CVCSHá um ponto central, onde tudo acontece

Repositório

A

1

B

2

C

3

D

4

terça-feira, 21 de julho de 2009

Page 19: Desvendando O Git

DVCSNão há ponto central(imposto pela ferramenta)

terça-feira, 21 de julho de 2009

Page 20: Desvendando O Git

DVCSNão há ponto central(imposto pela ferramenta)

A B C D F

José

A B C DE F G

Felipe

A B C DE

João

?

A B C DE F GRepositório?

terça-feira, 21 de julho de 2009

Page 21: Desvendando O Git

Mudança de Paradigma

terça-feira, 21 de julho de 2009

Page 22: Desvendando O Git

Commits Locais

terça-feira, 21 de julho de 2009

Page 23: Desvendando O Git

Commits Locais-Tem certeza?

terça-feira, 21 de julho de 2009

Page 24: Desvendando O Git

Commits Locais-Tem certeza?

-Bom, se você quer descobrir que cometeu um erro depois de 200 linhas de código....

terça-feira, 21 de julho de 2009

Page 25: Desvendando O Git

Commits Pequenos

terça-feira, 21 de julho de 2009

Page 26: Desvendando O Git

Commits PequenosMas o meu código ainda está quebrado!

terça-feira, 21 de julho de 2009

Page 27: Desvendando O Git

Commits PequenosMas o meu código ainda está quebrado!

Ninguém vai ficar sabendo!

terça-feira, 21 de julho de 2009

Page 28: Desvendando O Git

Commits PequenosMas o meu código ainda está quebrado!

Ninguém vai ficar sabendo!

E você vai começar a perceber o que está fazendo!

terça-feira, 21 de julho de 2009

Page 29: Desvendando O Git

GIT 101

terça-feira, 21 de julho de 2009

Page 30: Desvendando O Git

Conceitos básicos

GIT 101

terça-feira, 21 de julho de 2009

Page 31: Desvendando O Git

Ao invés de se preocupar em armazenar o estado de uma peça, ele armazena sempre o estado do tabuleiro inteiro

terça-feira, 21 de julho de 2009

Page 32: Desvendando O Git

Versionamento de Conteúdo

Ao invés de se preocupar em armazenar o estado de uma peça, ele armazena sempre o estado do tabuleiro inteiro

terça-feira, 21 de julho de 2009

Page 33: Desvendando O Git

Versionamento de ConteúdoO Git versiona o conteudo da árvore inteira

Ao invés de se preocupar em armazenar o estado de uma peça, ele armazena sempre o estado do tabuleiro inteiro

terça-feira, 21 de julho de 2009

Page 34: Desvendando O Git

terça-feira, 21 de julho de 2009

Page 35: Desvendando O Git

Uma pilha de alterações

terça-feira, 21 de julho de 2009

Page 36: Desvendando O Git

Uma pilha de alterações

Um commit não é nada mais do que as diferenças aplicadas à árvore de código

terça-feira, 21 de julho de 2009

Page 37: Desvendando O Git

O ÍndiceTira um “snapshot” seletivo dos objetos da árvore

terça-feira, 21 de julho de 2009

Page 38: Desvendando O Git

O ÍndiceTira um “snapshot” seletivo dos objetos da árvore

Meus Arquivos

Índice Repositóriogit add git commit

terça-feira, 21 de julho de 2009

Page 39: Desvendando O Git

Commit

terça-feira, 21 de julho de 2009

Page 40: Desvendando O Git

Commit

Coloca tudo que está no indice dentro do repositório

terça-feira, 21 de julho de 2009

Page 41: Desvendando O Git

Commit

Coloca tudo que está no indice dentro do repositório

São indicados por um hash SHA único

terça-feira, 21 de julho de 2009

Page 42: Desvendando O Git

RepositórioGrafo Acíclico Dirigido

terça-feira, 21 de julho de 2009

Page 43: Desvendando O Git

BranchesSimples ponteiros dentro do grafo

terça-feira, 21 de julho de 2009

Page 44: Desvendando O Git

GIT 102Conhecendo mais a fundo

terça-feira, 21 de julho de 2009

Page 45: Desvendando O Git

Tópicos

Pesquisando

Fazendo Merges I

Mudando a História

Fazendo Merges II

Pedindo tempo

terça-feira, 21 de julho de 2009

Page 46: Desvendando O Git

Pesquisando“Em que arquivo ficava aquele método?”“Onde eu defini aquela task do rake?”

terça-feira, 21 de julho de 2009

Page 47: Desvendando O Git

git log -S'def index' --pickaxe-all

terça-feira, 21 de julho de 2009

Page 48: Desvendando O Git

Fazendo Merges - INão-fast-forward

terça-feira, 21 de julho de 2009

Page 49: Desvendando O Git

Mudando a História“Se você pensa que eu vou fazer esse merge, pode tirar o cavalinho da chuva!”

terça-feira, 21 de julho de 2009

Page 50: Desvendando O Git

Fazendo Merges - IIPrimeiro fazemos um rebase

terça-feira, 21 de julho de 2009

Page 51: Desvendando O Git

Fazendo Merges - IIEm seguida fazemos o merge mesmoEle só vai mover o ponteiro do branch

terça-feira, 21 de julho de 2009

Page 52: Desvendando O Git

Pedindo tempo

“Corrija um bug para mim no branch de produção agora!”

“Mas eu estava fazendo outra coisa!”

terça-feira, 21 de julho de 2009

Page 53: Desvendando O Git

GIT 103Psssst!

terça-feira, 21 de julho de 2009

Page 54: Desvendando O Git

Tópicos

Cherry-pick

Cherry

Bisect

Managing Remotes

Submódulos

terça-feira, 21 de julho de 2009

Page 55: Desvendando O Git

Cherry-pick

Essa correção tem que ir para a produção imediatamente!

Mas ela está lá no meio das minhas coisas da versão que ainda não saiu!

git cherry-pick pega um commit de qualquer lugar da árvore e tenta aplicá-lo no branch atual.

terça-feira, 21 de julho de 2009

Page 56: Desvendando O Git

Cherry

Putz, corrigi esse bug na produção mês passado!

Você não aplicou a correção no desenvolvimento?

git cherry faz uma busca pelo conteúdo dos commits para detectar quais não foram aplicados em um determinado branch

terça-feira, 21 de julho de 2009

Page 57: Desvendando O Git

Bisect

“Mas eu já tinha corrigido esse bug, quem foi o......”

Pesquisa qual o commit introduziu determinado bug

terça-feira, 21 de julho de 2009

Page 58: Desvendando O Git

Gerenciando Remotos

git remote add <nome> <url>

git fetch <nome>

git push <nome> <branch>

terça-feira, 21 de julho de 2009

Page 59: Desvendando O Git

Submódulos

Uma maneira eficiente de agrupar projetos em repositórios diferentes

Especialmente útil para projetos rails, onde os plugins costumam ser hospedados no github

git submodule add <url> destino

terça-feira, 21 de julho de 2009

Page 60: Desvendando O Git

Fluxos de trabalho em Equipe

terça-feira, 21 de julho de 2009

Page 61: Desvendando O Git

Fluxos de trabalho em Equipe

Servidor (gitosis)

João

José Vera

terça-feira, 21 de julho de 2009

Page 62: Desvendando O Git

Fluxos de trabalho em Equipe

Branches Remotos

Servidor (gitosis)

João

José Vera

terça-feira, 21 de julho de 2009

Page 63: Desvendando O Git

Fluxos de trabalho em Equipe

Branches locais

Branches Remotos

Servidor (gitosis)

João

José Vera

terça-feira, 21 de julho de 2009

Page 64: Desvendando O Git

Recuperando DesastresO que fazer quando as coisas não vão indo bem

terça-feira, 21 de julho de 2009

Page 65: Desvendando O Git

Tópicos

Desfazendo alterações

Alterando a história

terça-feira, 21 de julho de 2009

Page 66: Desvendando O Git

Desfazendo alterações

git reset

git reset --mixed

git reset --hard

terça-feira, 21 de julho de 2009

Page 67: Desvendando O Git

Alterando a história

Commit indesejado?

Quer unificar commits?

Quer alterar a mensagem do commit?

git rebase -i

terça-feira, 21 de julho de 2009

Page 68: Desvendando O Git

Dicas

git format-patch / git am

prepara commits para serem transmitidos por email

git bundle

transporte de branches em arquivo

git gc

limpeza do repositório (Garbage Collector)

git log --graph --oneline

visualização da árvore de commits no console

terça-feira, 21 de julho de 2009

Page 69: Desvendando O Git

git log --oneline --graph

terça-feira, 21 de julho de 2009

Page 70: Desvendando O Git

terça-feira, 21 de julho de 2009

Page 71: Desvendando O Git

Obrigado!

terça-feira, 21 de julho de 2009