Desvendando o GIT
           Douglas Campos (qmx)
           douglas@theros.info
           http://qmx.me

terça-feira, 21...
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...
Sumário
                 Introdução
                 Mudando de Paradigma
                 Core GIT
                 Fluxo...
Sumário
                 Introdução
                 Mudando de Paradigma
                 Core GIT
                 Fluxo...
Sumário
                 Introdução
                 Mudando de Paradigma
                 Core GIT
                 Fluxo...
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 à
  ...
Introdução

                 BK
                 Torvalds
                 Kernel
                 ~45 dias do início à
  ...
CVCS
           Há um ponto central, onde tudo acontece

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

                                   1   2           3     4




                                   A   B      ...
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



                                                                  ...
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
           comet...
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...
Commits Pequenos
           Mas o meu código ainda está quebrado!
           Ninguém vai ficar sabendo!
           E você v...
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 um...
Ao invés de se preocupar
                                   em armazenar o estado
                                   de um...
Ao invés de se preocupar
                                                 em armazenar o estado
                          ...
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ça...
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 Índic...
Commit




terça-feira, 21 de julho de 2009
Commit

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




terça-...
Commit

                 Coloca tudo que está
                 no indice dentro do
                 repositório
          ...
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
              ...
Pesquisando
           “Em que arquivo ficava aquele método?”
           “Onde eu defini aquela task do rake?”
terça-feira, ...
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...
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-fei...
Pedindo tempo


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

terça-feira, 21 de julho de 2009
Tópicos
                 Cherry-pick
                 Cherry
                 Bisect
                 Managing Remotes
   ...
Cherry-pick

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

                 Putz, corrigi esse bug na produção mês passado!
                 Você não aplicou a correção no d...
Bisect

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


                 git remote add <nome> <url>
                 git fetch <nome>
                 git ...
Submódulos

                 Uma maneira eficiente de agrupar projetos em
                 repositórios diferentes
        ...
Fluxos de trabalho em
           Equipe




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




                 ...
Fluxos de trabalho em
           Equipe
                                          Servidor (gitosis)

     Branches
     R...
Fluxos de trabalho em
           Equipe
                                          Servidor (gitosis)

     Branches
     R...
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


...
Alterando a história
                 Commit indesejado?
                 Quer unificar commits?
                 Quer alte...
Dicas
                 git format-patch / git am

                       prepara commits para serem transmitidos por email...
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...
Próximos SlideShares
Carregando em…5
×

Desvendando O Git

2.169 visualizações

Publicada em

Palestra no 5º encontro do GURU-SP

Publicada em: Tecnologia, Educação
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.169
No SlideShare
0
A partir de incorporações
0
Número de incorporações
48
Ações
Compartilhamentos
0
Downloads
73
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Desvendando O Git

  1. 1. Desvendando o GIT Douglas Campos (qmx) douglas@theros.info http://qmx.me terça-feira, 21 de julho de 2009
  2. 2. terça-feira, 21 de julho de 2009
  3. 3. Sumário terça-feira, 21 de julho de 2009
  4. 4. Sumário Introdução terça-feira, 21 de julho de 2009
  5. 5. Sumário Introdução Mudando de Paradigma terça-feira, 21 de julho de 2009
  6. 6. Sumário Introdução Mudando de Paradigma Core GIT terça-feira, 21 de julho de 2009
  7. 7. Sumário Introdução Mudando de Paradigma Core GIT Fluxos de Trabalho em Equipe terça-feira, 21 de julho de 2009
  8. 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. 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. 10. terça-feira, 21 de julho de 2009
  11. 11. Introdução terça-feira, 21 de julho de 2009
  12. 12. Introdução BK terça-feira, 21 de julho de 2009
  13. 13. Introdução BK Torvalds terça-feira, 21 de julho de 2009
  14. 14. Introdução BK Torvalds Kernel terça-feira, 21 de julho de 2009
  15. 15. Introdução BK Torvalds Kernel ~45 dias do início à produção! terça-feira, 21 de julho de 2009
  16. 16. Introdução BK Torvalds Kernel ~45 dias do início à produção! Performático terça-feira, 21 de julho de 2009
  17. 17. CVCS Há um ponto central, onde tudo acontece terça-feira, 21 de julho de 2009
  18. 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. 19. DVCS Não há ponto central (imposto pela ferramenta) terça-feira, 21 de julho de 2009
  20. 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. 21. Mudança de Paradigma terça-feira, 21 de julho de 2009
  22. 22. Commits Locais terça-feira, 21 de julho de 2009
  23. 23. Commits Locais -Tem certeza? terça-feira, 21 de julho de 2009
  24. 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
  25. 25. Commits Pequenos terça-feira, 21 de julho de 2009
  26. 26. Commits Pequenos Mas o meu código ainda está quebrado! terça-feira, 21 de julho de 2009
  27. 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. 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. 29. GIT 101 terça-feira, 21 de julho de 2009
  30. 30. GIT 101 Conceitos básicos terça-feira, 21 de julho de 2009
  31. 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. 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. 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. 34. terça-feira, 21 de julho de 2009
  35. 35. Uma pilha de alterações terça-feira, 21 de julho de 2009
  36. 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. 37. O Índice Tira um “snapshot” seletivo dos objetos da árvore terça-feira, 21 de julho de 2009
  38. 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. 39. Commit terça-feira, 21 de julho de 2009
  40. 40. Commit Coloca tudo que está no indice dentro do repositório terça-feira, 21 de julho de 2009
  41. 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. 42. Repositório Grafo Acíclico Dirigido terça-feira, 21 de julho de 2009
  43. 43. Branches Simples ponteiros dentro do grafo terça-feira, 21 de julho de 2009
  44. 44. GIT 102 Conhecendo mais a fundo terça-feira, 21 de julho de 2009
  45. 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. 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. 47. git log -S'def index' --pickaxe-all terça-feira, 21 de julho de 2009
  48. 48. Fazendo Merges - I Não-fast-forward terça-feira, 21 de julho de 2009
  49. 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. 50. Fazendo Merges - II Primeiro fazemos um rebase terça-feira, 21 de julho de 2009
  51. 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. 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. 53. GIT 103 Psssst! terça-feira, 21 de julho de 2009
  54. 54. Tópicos Cherry-pick Cherry Bisect Managing Remotes Submódulos terça-feira, 21 de julho de 2009
  55. 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. 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. 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. 58. Gerenciando Remotos git remote add <nome> <url> git fetch <nome> git push <nome> <branch> terça-feira, 21 de julho de 2009
  59. 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. 60. Fluxos de trabalho em Equipe terça-feira, 21 de julho de 2009
  61. 61. Fluxos de trabalho em Equipe Servidor (gitosis) José Vera João terça-feira, 21 de julho de 2009
  62. 62. Fluxos de trabalho em Equipe Servidor (gitosis) Branches Remotos José Vera João terça-feira, 21 de julho de 2009
  63. 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. 64. Recuperando Desastres O que fazer quando as coisas não vão indo bem terça-feira, 21 de julho de 2009
  65. 65. Tópicos Desfazendo alterações Alterando a história terça-feira, 21 de julho de 2009
  66. 66. Desfazendo alterações git reset git reset --mixed git reset --hard terça-feira, 21 de julho de 2009
  67. 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. 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. 69. git log --oneline --graph terça-feira, 21 de julho de 2009
  70. 70. terça-feira, 21 de julho de 2009
  71. 71. Obrigado! terça-feira, 21 de julho de 2009
  72. 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

×