SlideShare uma empresa Scribd logo
Desvendando o GIT
           Douglas 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
Sumário
                 Introdução




terça-feira, 21 de julho de 2009
Sumário
                 Introdução
                 Mudando de Paradigma




terça-feira, 21 de julho de 2009
Sumário
                 Introdução
                 Mudando de Paradigma
                 Core GIT




terça-feira, 21 de julho de 2009
Sumário
                 Introdução
                 Mudando de Paradigma
                 Core GIT
                 Fluxos de Trabalho em Equipe




terça-feira, 21 de julho de 2009
Sumário
                 Introdução
                 Mudando de Paradigma
                 Core GIT
                 Fluxos de Trabalho em Equipe
                 Recuperação de Desastres




terça-feira, 21 de julho de 2009
Sumário
                 Introdução
                 Mudando de Paradigma
                 Core GIT
                 Fluxos de Trabalho em Equipe
                 Recuperação de Desastres
                 Boas Práticas



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
CVCS
           Há um ponto central, onde tudo acontece

terça-feira, 21 de julho de 2009
Repositório

                                   1   2           3     4




                                   A   B           C     D



           CVCS
           Há um ponto central, onde tudo acontece

terça-feira, 21 de julho de 2009
DVCS
           Não há ponto central
           (imposto pela ferramenta)
terça-feira, 21 de julho de 2009
Repositório?               A   E   B   C   D   F   G



                                                                                   José

                                                                       A       B    C     D   F
                                   João

                  A            E    B     C       D



                                                  A       E       B     C      D    F     G

                                                                      Felipe
           DVCS                                                                               ?
           Não há ponto central
           (imposto pela ferramenta)
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 Pequenos
           Mas o meu código ainda está quebrado!




terça-feira, 21 de julho de 2009
Commits Pequenos
           Mas o meu código ainda está quebrado!
           Ninguém vai ficar sabendo!




terça-feira, 21 de julho de 2009
Commits Pequenos
           Mas 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
GIT 101
           Conceitos básicos

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
Ao invés de se preocupar
                                   em armazenar o estado
                                   de uma peça, ele
                                   armazena sempre o
                                   estado do tabuleiro
                                   inteiro




           Versionamento de Conteúdo

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




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

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 Índice
           Tira um “snapshot” seletivo dos objetos da
           árvore
terça-feira, 21 de julho de 2009
Meus
                                   git add   Índice   git commit   Repositório
       Arquivos




           O Índice
           Tira um “snapshot” seletivo dos objetos da
           árvore
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ório
           Grafo Acíclico Dirigido

terça-feira, 21 de julho de 2009
Branches
           Simples ponteiros dentro do grafo

terça-feira, 21 de julho de 2009
GIT 102
           Conhecendo 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 - I
           Nã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 - II
           Primeiro fazemos um rebase

terça-feira, 21 de julho de 2009
Fazendo Merges - II
           Em seguida fazemos o merge mesmo
           Ele 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 103
           Psssst!

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)




                                   José                        Vera

                                                João



terça-feira, 21 de julho de 2009
Fluxos de trabalho em
           Equipe
                                          Servidor (gitosis)

     Branches
     Remotos


                                   José                        Vera

                                                João



terça-feira, 21 de julho de 2009
Fluxos de trabalho em
           Equipe
                                          Servidor (gitosis)

     Branches
     Remotos


                                   José                        Vera

                                                João

        Branches locais
terça-feira, 21 de julho de 2009
Recuperando Desastres
           O 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
Créditos / Bibliografia
                 InfoQ

                 The OOPS list

                 http://betterexplained.com

                 http://www.flickr.com/photos/cuppini/3211910657/sizes/l/

                 http://www.flickr.com/photos/denverjeffrey/2561885967/sizes/l/

                 http://www.flickr.com/photos/dianafayt/2314973004/sizes/l/

                 http://www.newsgroper.com/files/post_images/back%20to%20the%20future.jpeg

                 http://www.flickr.com/photos/nonoq8/2711265848/sizes/o/

                 http://www.flickr.com/photos/cc_chapman/498250339/sizes/l/




terça-feira, 21 de julho de 2009

Mais conteúdo relacionado

PDF
Segurança na reparacão naval
PPT
Aulão sst
PPTX
Introdução ao git
PPTX
Introdução ao Git
PDF
Ferramenta git
PDF
Git desde o inicio
PDF
github-git-cheat-sheet.pdf
PDF
JavaScript por debaixo dos panos
Segurança na reparacão naval
Aulão sst
Introdução ao git
Introdução ao Git
Ferramenta git
Git desde o inicio
github-git-cheat-sheet.pdf
JavaScript por debaixo dos panos

Último (8)

PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Mecânico de Manutenção de Equipamentos.pptx
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Manejo integrado de pragas na cultura do algodão
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Mecânico de Manutenção de Equipamentos.pptx
Arquitetura de computadores - Memórias Secundárias
Viasol Energia Solar -Soluções para geração e economia de energia
Manejo integrado de pragas na cultura do algodão
Anúncio
Anúncio

Desvendando O Git

  • 1. Desvendando o GIT Douglas Campos (qmx) douglas@theros.info http://qmx.me terça-feira, 21 de julho de 2009
  • 2. terça-feira, 21 de julho de 2009
  • 4. Sumário Introdução terça-feira, 21 de julho de 2009
  • 5. Sumário Introdução Mudando de Paradigma terça-feira, 21 de julho de 2009
  • 6. Sumário Introdução Mudando de Paradigma Core GIT terça-feira, 21 de julho de 2009
  • 7. Sumário Introdução Mudando de Paradigma Core GIT Fluxos de Trabalho em Equipe terça-feira, 21 de julho de 2009
  • 8. Sumário Introdução Mudando de Paradigma Core GIT Fluxos de Trabalho em Equipe Recuperação de Desastres terça-feira, 21 de julho de 2009
  • 9. Sumário Introdução Mudando de Paradigma Core GIT Fluxos de Trabalho em Equipe Recuperação de Desastres Boas Práticas terça-feira, 21 de julho de 2009
  • 10. terça-feira, 21 de julho de 2009
  • 12. Introdução BK terça-feira, 21 de julho de 2009
  • 13. Introdução BK Torvalds terça-feira, 21 de julho de 2009
  • 14. Introdução BK Torvalds Kernel terça-feira, 21 de julho de 2009
  • 15. Introdução BK Torvalds Kernel ~45 dias do início à produção! terça-feira, 21 de julho de 2009
  • 16. Introdução BK Torvalds Kernel ~45 dias do início à produção! Performático terça-feira, 21 de julho de 2009
  • 17. CVCS Há um ponto central, onde tudo acontece terça-feira, 21 de julho de 2009
  • 18. Repositório 1 2 3 4 A B C D CVCS Há um ponto central, onde tudo acontece terça-feira, 21 de julho de 2009
  • 19. DVCS Não há ponto central (imposto pela ferramenta) terça-feira, 21 de julho de 2009
  • 20. Repositório? A E B C D F G José A B C D F João A E B C D A E B C D F G Felipe DVCS ? Não há ponto central (imposto pela ferramenta) terça-feira, 21 de julho de 2009
  • 21. Mudança de Paradigma terça-feira, 21 de julho de 2009
  • 22. Commits Locais terça-feira, 21 de julho de 2009
  • 23. Commits Locais -Tem certeza? terça-feira, 21 de julho de 2009
  • 24. 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
  • 26. Commits Pequenos Mas o meu código ainda está quebrado! terça-feira, 21 de julho de 2009
  • 27. Commits Pequenos Mas o meu código ainda está quebrado! Ninguém vai ficar sabendo! terça-feira, 21 de julho de 2009
  • 28. Commits Pequenos Mas 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
  • 29. GIT 101 terça-feira, 21 de julho de 2009
  • 30. GIT 101 Conceitos básicos terça-feira, 21 de julho de 2009
  • 31. 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
  • 32. Ao invés de se preocupar em armazenar o estado de uma peça, ele armazena sempre o estado do tabuleiro inteiro Versionamento de Conteúdo terça-feira, 21 de julho de 2009
  • 33. Ao invés de se preocupar em armazenar o estado de uma peça, ele armazena sempre o estado do tabuleiro inteiro Versionamento de Conteúdo O Git versiona o conteudo da árvore inteira terça-feira, 21 de julho de 2009
  • 34. terça-feira, 21 de julho de 2009
  • 35. Uma pilha de alterações terça-feira, 21 de julho de 2009
  • 36. 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
  • 37. O Índice Tira um “snapshot” seletivo dos objetos da árvore terça-feira, 21 de julho de 2009
  • 38. Meus git add Índice git commit Repositório Arquivos O Índice Tira um “snapshot” seletivo dos objetos da árvore terça-feira, 21 de julho de 2009
  • 39. Commit terça-feira, 21 de julho de 2009
  • 40. Commit Coloca tudo que está no indice dentro do repositório terça-feira, 21 de julho de 2009
  • 41. 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
  • 42. Repositório Grafo Acíclico Dirigido terça-feira, 21 de julho de 2009
  • 43. Branches Simples ponteiros dentro do grafo terça-feira, 21 de julho de 2009
  • 44. GIT 102 Conhecendo mais a fundo terça-feira, 21 de julho de 2009
  • 45. Tópicos Pesquisando Fazendo Merges I Mudando a História Fazendo Merges II Pedindo tempo terça-feira, 21 de julho de 2009
  • 46. Pesquisando “Em que arquivo ficava aquele método?” “Onde eu defini aquela task do rake?” terça-feira, 21 de julho de 2009
  • 47. git log -S'def index' --pickaxe-all terça-feira, 21 de julho de 2009
  • 48. Fazendo Merges - I Não-fast-forward terça-feira, 21 de julho de 2009
  • 49. 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
  • 50. Fazendo Merges - II Primeiro fazemos um rebase terça-feira, 21 de julho de 2009
  • 51. Fazendo Merges - II Em seguida fazemos o merge mesmo Ele só vai mover o ponteiro do branch terça-feira, 21 de julho de 2009
  • 52. 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
  • 53. GIT 103 Psssst! terça-feira, 21 de julho de 2009
  • 54. Tópicos Cherry-pick Cherry Bisect Managing Remotes Submódulos terça-feira, 21 de julho de 2009
  • 55. 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
  • 56. 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
  • 57. 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
  • 58. Gerenciando Remotos git remote add <nome> <url> git fetch <nome> git push <nome> <branch> terça-feira, 21 de julho de 2009
  • 59. 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
  • 60. Fluxos de trabalho em Equipe terça-feira, 21 de julho de 2009
  • 61. Fluxos de trabalho em Equipe Servidor (gitosis) José Vera João terça-feira, 21 de julho de 2009
  • 62. Fluxos de trabalho em Equipe Servidor (gitosis) Branches Remotos José Vera João terça-feira, 21 de julho de 2009
  • 63. Fluxos de trabalho em Equipe Servidor (gitosis) Branches Remotos José Vera João Branches locais terça-feira, 21 de julho de 2009
  • 64. Recuperando Desastres O que fazer quando as coisas não vão indo bem terça-feira, 21 de julho de 2009
  • 65. Tópicos Desfazendo alterações Alterando a história terça-feira, 21 de julho de 2009
  • 66. Desfazendo alterações git reset git reset --mixed git reset --hard terça-feira, 21 de julho de 2009
  • 67. 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
  • 68. 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
  • 69. git log --oneline --graph terça-feira, 21 de julho de 2009
  • 70. terça-feira, 21 de julho de 2009
  • 72. Créditos / Bibliografia InfoQ The OOPS list http://betterexplained.com http://www.flickr.com/photos/cuppini/3211910657/sizes/l/ http://www.flickr.com/photos/denverjeffrey/2561885967/sizes/l/ http://www.flickr.com/photos/dianafayt/2314973004/sizes/l/ http://www.newsgroper.com/files/post_images/back%20to%20the%20future.jpeg http://www.flickr.com/photos/nonoq8/2711265848/sizes/o/ http://www.flickr.com/photos/cc_chapman/498250339/sizes/l/ terça-feira, 21 de julho de 2009