Controle de versão com
           GIT

Paulo César M Jeveaux
@jeveaux
jeveaux.com
controlar versão
de código, Batman, pra que
           isso?
controlar versão
        de código, Batman, pra que
ouch!              isso?
controlar versão
                                de código, Batman, pra que
                        ouch!              isso?




Robin, como você controla
  as alterações do seu
         código?

 E como você controla as
 versões do seu produto?

E o hitórico de tudo isso?
• Open Source
      • Criado por Linus Torvalds


git
      • Necessidade de manter o
        controle de versão do
        código do Kernel do Linux
      • Mantido por Junio Hamano
      • Para projetos P, M, G e XG
      • Sistema de controle de
        versões distribuído!
• Desenvolvimento distribuído
      • Rápido!

git   • Branches e merges sem dor
        e forma simples
      • Rápido!
      • Eficiente e simples
      • Comunidade forte
      • Rápido!
alguém
usa isso?
alguém
                         usa isso?




Linux Kernel   Android         X.org


    Perl       Fedora      PostgreSQL


  gnome        Debian    ...muitos outros
Conceito
centralizado X distribuído
centralizado
•   repositório único e centralizado
•   commit só por usuário com permissão


                              dev n

     repositório
                              dev 3

                     dev 2

            dev 1
centralizado
   •   repositório único e centralizado
   •   commit só por usuário com permissão


                                 dev n

          repositório
                                 dev 3
 históricos,
  commits,              dev 2
branches, etc
                dev 1
centralizado
   •   repositório único e centralizado
   •   commit só por usuário com permissão


                                   dev n

          repositório
                                   dev 3
 históricos,
  commits,              dev 2
branches, etc
                dev 1


                          checkout no dia N
centralizado
   •   repositório único e centralizado
   •   commit só por usuário com permissão


                                   dev n

          repositório
                                   dev 3
 históricos,
  commits,              dev 2
branches, etc
                                      checkout no dia N+1
                dev 1
                                        diferente do dev 1


                          checkout no dia N
centralizado
   •   repositório único e centralizado
   •   commit só por usuário com permissão


                                   dev n

          repositório
                                   dev 3
                                                  checkout no dia N+2
 históricos,
                                                  diferente do dev 1 e 2
  commits,              dev 2
branches, etc
                                      checkout no dia N+1
                dev 1
                                        diferente do dev 1


                          checkout no dia N
centralizado
   •   repositório único e centralizado
   •   commit só por usuário com permissão


                                   dev n

          repositório                               checkout no dia N+3
                                                   diferente do dev 1, 2 e 3

                                   dev 3
                                                  checkout no dia N+2
 históricos,
                                                  diferente do dev 1 e 2
  commits,              dev 2
branches, etc
                                      checkout no dia N+1
                dev 1
                                        diferente do dev 1


                          checkout no dia N
distribuído
•   cada cópia é um repositório completo
•   histórico completo e total
•   commit local {on|off}line
•   commits podem ser transferidos entre repositórios
    de forma simples com pull ou push

                    dev 3

    dev 1


                            dev n

            dev 2
distribuído
•   cada cópia é um repositório completo
•   histórico completo e total
•   commit local {on|off}line
•   commits podem ser transferidos entre repositórios
    de forma simples com pull ou push

                    dev 3

    dev 1


                            dev n     uma nova cópia pode ser
                                    feita de qualquer repositório
            dev 2
distribuído
•   cada cópia é um repositório completo
•   histórico completo e total
•   commit local {on|off}line
•   commits podem ser transferidos entre repositórios
    de forma simples com pull ou push

                    dev 3

    dev 1                           commits podem ser transferidos
                                       por todos repositórios

                            dev n         uma nova cópia pode ser
                                        feita de qualquer repositório
            dev 2
você pode fazer commit de
qualquer lugar, até no avião!
você pode fazer commit de
qualquer lugar, até no avião!




         RLY?
branches
• rápido!
• muito rápido!
• branches locais baratas
• branches também podem ser remotas (github)
• merge super poderoso
• uma branch para cada feature/história/bug/etc
histórico   merge

  logs       pull

  diffs     push

commits      tag
stash


 index


 bisect


GIT-SVN
eu ti l i dades
   rramen tas
fe
o terminal é
seu amigo :)
gitk
tower
... e muitas outras
          ferramentas
• gitnub
• qgit
• git-gui
• tortoise-git
• ...
github
comunidade em
torno de código
 muitos projetos
  open source
   serve para
projetos privados
funciona! funciona
   muito bem!
grátis para open    comunidade em
     source         torno de código
fork de maneira      muitos projetos
  fácil e rápida      open source
 facilita muito a      serve para
   colaboração      projetos privados
é o queridinho na   funciona! funciona
   comunidade          muito bem!
reddit
 Ruby on Rails
                         curl
           jQuery
                     CakePHP
            Redis
                       django
           node.js
                     mongodb
Quem usa
 github
Servidor GIT privado

            • gratuito
gitorious   • open source
            • pode ser usado também
             online como o github,
             também gratuito
muitas opções

• gitosis
• codebasehq
• repo.or.cz
• gitorious
• ...
Para o alto e avante




  akitaonrails.com/screencasts
dúvidas?
Referências

• git-scm.org
• github.com/guides/home
• akitaonrails.com
• “Git: controle de versão de jeito certo” -
  por Arthur Zapparoli
Controle de versão com
           GIT

Paulo César M Jeveaux
@jeveaux
jeveaux.com

Controle de versão com GIT

  • 1.
    Controle de versãocom GIT Paulo César M Jeveaux @jeveaux jeveaux.com
  • 3.
    controlar versão de código,Batman, pra que isso?
  • 4.
    controlar versão de código, Batman, pra que ouch! isso?
  • 5.
    controlar versão de código, Batman, pra que ouch! isso? Robin, como você controla as alterações do seu código? E como você controla as versões do seu produto? E o hitórico de tudo isso?
  • 6.
    • Open Source • Criado por Linus Torvalds git • Necessidade de manter o controle de versão do código do Kernel do Linux • Mantido por Junio Hamano • Para projetos P, M, G e XG • Sistema de controle de versões distribuído!
  • 7.
    • Desenvolvimento distribuído • Rápido! git • Branches e merges sem dor e forma simples • Rápido! • Eficiente e simples • Comunidade forte • Rápido!
  • 8.
  • 9.
    alguém usa isso? Linux Kernel Android X.org Perl Fedora PostgreSQL gnome Debian ...muitos outros
  • 10.
  • 11.
    centralizado • repositório único e centralizado • commit só por usuário com permissão dev n repositório dev 3 dev 2 dev 1
  • 12.
    centralizado • repositório único e centralizado • commit só por usuário com permissão dev n repositório dev 3 históricos, commits, dev 2 branches, etc dev 1
  • 13.
    centralizado • repositório único e centralizado • commit só por usuário com permissão dev n repositório dev 3 históricos, commits, dev 2 branches, etc dev 1 checkout no dia N
  • 14.
    centralizado • repositório único e centralizado • commit só por usuário com permissão dev n repositório dev 3 históricos, commits, dev 2 branches, etc checkout no dia N+1 dev 1 diferente do dev 1 checkout no dia N
  • 15.
    centralizado • repositório único e centralizado • commit só por usuário com permissão dev n repositório dev 3 checkout no dia N+2 históricos, diferente do dev 1 e 2 commits, dev 2 branches, etc checkout no dia N+1 dev 1 diferente do dev 1 checkout no dia N
  • 16.
    centralizado • repositório único e centralizado • commit só por usuário com permissão dev n repositório checkout no dia N+3 diferente do dev 1, 2 e 3 dev 3 checkout no dia N+2 históricos, diferente do dev 1 e 2 commits, dev 2 branches, etc checkout no dia N+1 dev 1 diferente do dev 1 checkout no dia N
  • 17.
    distribuído • cada cópia é um repositório completo • histórico completo e total • commit local {on|off}line • commits podem ser transferidos entre repositórios de forma simples com pull ou push dev 3 dev 1 dev n dev 2
  • 18.
    distribuído • cada cópia é um repositório completo • histórico completo e total • commit local {on|off}line • commits podem ser transferidos entre repositórios de forma simples com pull ou push dev 3 dev 1 dev n uma nova cópia pode ser feita de qualquer repositório dev 2
  • 19.
    distribuído • cada cópia é um repositório completo • histórico completo e total • commit local {on|off}line • commits podem ser transferidos entre repositórios de forma simples com pull ou push dev 3 dev 1 commits podem ser transferidos por todos repositórios dev n uma nova cópia pode ser feita de qualquer repositório dev 2
  • 20.
    você pode fazercommit de qualquer lugar, até no avião!
  • 21.
    você pode fazercommit de qualquer lugar, até no avião! RLY?
  • 22.
  • 23.
    • rápido! • muitorápido! • branches locais baratas • branches também podem ser remotas (github) • merge super poderoso • uma branch para cada feature/história/bug/etc
  • 24.
    histórico merge logs pull diffs push commits tag
  • 25.
  • 26.
    eu ti li dades rramen tas fe
  • 27.
  • 28.
  • 29.
  • 30.
    ... e muitasoutras ferramentas • gitnub • qgit • git-gui • tortoise-git • ...
  • 31.
  • 33.
    comunidade em torno decódigo muitos projetos open source serve para projetos privados funciona! funciona muito bem!
  • 34.
    grátis para open comunidade em source torno de código fork de maneira muitos projetos fácil e rápida open source facilita muito a serve para colaboração projetos privados é o queridinho na funciona! funciona comunidade muito bem!
  • 35.
    reddit Ruby onRails curl jQuery CakePHP Redis django node.js mongodb Quem usa github
  • 36.
    Servidor GIT privado • gratuito gitorious • open source • pode ser usado também online como o github, também gratuito
  • 37.
    muitas opções • gitosis •codebasehq • repo.or.cz • gitorious • ...
  • 38.
    Para o altoe avante akitaonrails.com/screencasts
  • 39.
  • 40.
    Referências • git-scm.org • github.com/guides/home •akitaonrails.com • “Git: controle de versão de jeito certo” - por Arthur Zapparoli
  • 41.
    Controle de versãocom GIT Paulo César M Jeveaux @jeveaux jeveaux.com