Desvendando O Git

Preview:

DESCRIPTION

Palestra no 5º encontro do GURU-SP

Citation preview

Desvendando o GITDouglas Campos (qmx)douglas@theros.info

http://qmx.me

terça-feira, 21 de julho de 2009

terça-feira, 21 de julho de 2009

Sumário

terça-feira, 21 de julho de 2009

Introdução

Sumário

terça-feira, 21 de julho de 2009

Introdução

Mudando de Paradigma

Sumário

terça-feira, 21 de julho de 2009

Introdução

Mudando de Paradigma

Core GIT

Sumário

terça-feira, 21 de julho de 2009

Introdução

Mudando de Paradigma

Core GIT

Fluxos de Trabalho em Equipe

Sumário

terça-feira, 21 de julho de 2009

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

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

terça-feira, 21 de julho de 2009

Introdução

terça-feira, 21 de julho de 2009

Introdução

BK

terça-feira, 21 de julho de 2009

Introdução

BK

Torvalds

terça-feira, 21 de julho de 2009

Introdução

BK

Torvalds

Kernel

terça-feira, 21 de julho de 2009

Introdução

BK

Torvalds

Kernel

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

terça-feira, 21 de julho de 2009

Introdução

BK

Torvalds

Kernel

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

Performático

terça-feira, 21 de julho de 2009

CVCSHá um ponto central, onde tudo acontece

terça-feira, 21 de julho de 2009

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

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

terça-feira, 21 de julho de 2009

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

Mudança de Paradigma

terça-feira, 21 de julho de 2009

Commits Locais

terça-feira, 21 de julho de 2009

Commits Locais-Tem certeza?

terça-feira, 21 de julho de 2009

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

Commits Pequenos

terça-feira, 21 de julho de 2009

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

terça-feira, 21 de julho de 2009

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

Ninguém vai ficar sabendo!

terça-feira, 21 de julho de 2009

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

GIT 101

terça-feira, 21 de julho de 2009

Conceitos básicos

GIT 101

terça-feira, 21 de julho de 2009

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

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

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

terça-feira, 21 de julho de 2009

Uma pilha de alterações

terça-feira, 21 de julho de 2009

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

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

terça-feira, 21 de julho de 2009

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

Commit

terça-feira, 21 de julho de 2009

Commit

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

terça-feira, 21 de julho de 2009

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

RepositórioGrafo Acíclico Dirigido

terça-feira, 21 de julho de 2009

BranchesSimples ponteiros dentro do grafo

terça-feira, 21 de julho de 2009

GIT 102Conhecendo mais a fundo

terça-feira, 21 de julho de 2009

Tópicos

Pesquisando

Fazendo Merges I

Mudando a História

Fazendo Merges II

Pedindo tempo

terça-feira, 21 de julho de 2009

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

terça-feira, 21 de julho de 2009

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

terça-feira, 21 de julho de 2009

Fazendo Merges - INão-fast-forward

terça-feira, 21 de julho de 2009

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

Fazendo Merges - IIPrimeiro fazemos um rebase

terça-feira, 21 de julho de 2009

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

terça-feira, 21 de julho de 2009

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

GIT 103Psssst!

terça-feira, 21 de julho de 2009

Tópicos

Cherry-pick

Cherry

Bisect

Managing Remotes

Submódulos

terça-feira, 21 de julho de 2009

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

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

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

Gerenciando Remotos

git remote add <nome> <url>

git fetch <nome>

git push <nome> <branch>

terça-feira, 21 de julho de 2009

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

Fluxos de trabalho em Equipe

terça-feira, 21 de julho de 2009

Fluxos de trabalho em Equipe

Servidor (gitosis)

João

José Vera

terça-feira, 21 de julho de 2009

Fluxos de trabalho em Equipe

Branches Remotos

Servidor (gitosis)

João

José Vera

terça-feira, 21 de julho de 2009

Fluxos de trabalho em Equipe

Branches locais

Branches Remotos

Servidor (gitosis)

João

José Vera

terça-feira, 21 de julho de 2009

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

terça-feira, 21 de julho de 2009

Tópicos

Desfazendo alterações

Alterando a história

terça-feira, 21 de julho de 2009

Desfazendo alterações

git reset

git reset --mixed

git reset --hard

terça-feira, 21 de julho de 2009

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

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

git log --oneline --graph

terça-feira, 21 de julho de 2009

terça-feira, 21 de julho de 2009

Obrigado!

terça-feira, 21 de julho de 2009

Recommended