Conceitos
                                   Reposit´rio
                                          o
                                  Usando GIT




                                  Git o b´sico
                                         a

                Marcello Henrique, faraohh@gmail.com

                                       Brasil/Goi´s - UFG
                                                 a


                             23 de Outubro de 2008




Marcello Henrique, faraohh@gmail.com                        Git o b´sico
                                                                   a       1 / 84
Conceitos
                                       Reposit´rio
                                              o
                                      Usando GIT




1    Conceitos
       Source Control Manager
       Decentraliza¸˜o
                   ca
       Hist´ria
           o

2    Reposit´rio
            o
       Estrutura
       Objetos

3    Usando GIT
       Comandos
       Branching
       Remotes


    Marcello Henrique, faraohh@gmail.com             Git o b´sico
                                                            a       2 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Conceitos

       Gerenciamento de C´digo Fonte
                         o
               Controle nas mudan¸as dos arquivos
                                   c
               Reposit´rio / base de dados das mudan¸as
                       o                            c
               Diret´rio de trabalho / estado atual
                    o
       Modelo Centralizado
               Servidor: simples base de dados
               Cliente: diret´rio de trabalho & estado
                             o
       Modelo Descentralizado
               Qualquer um pode ser o servidor
               Reposit´rio acoplado ao diret´rio de trabalho
                       o                    o
               Hist´rico completo
                   o
               Trabalho desconectado

   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       3 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Conceitos

       Gerenciamento de C´digo Fonte
                         o
               Controle nas mudan¸as dos arquivos
                                   c
               Reposit´rio / base de dados das mudan¸as
                       o                            c
               Diret´rio de trabalho / estado atual
                    o
       Modelo Centralizado
               Servidor: simples base de dados
               Cliente: diret´rio de trabalho & estado
                             o
       Modelo Descentralizado
               Qualquer um pode ser o servidor
               Reposit´rio acoplado ao diret´rio de trabalho
                       o                    o
               Hist´rico completo
                   o
               Trabalho desconectado

   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       3 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Conceitos

       Gerenciamento de C´digo Fonte
                         o
               Controle nas mudan¸as dos arquivos
                                   c
               Reposit´rio / base de dados das mudan¸as
                       o                            c
               Diret´rio de trabalho / estado atual
                    o
       Modelo Centralizado
               Servidor: simples base de dados
               Cliente: diret´rio de trabalho & estado
                             o
       Modelo Descentralizado
               Qualquer um pode ser o servidor
               Reposit´rio acoplado ao diret´rio de trabalho
                       o                    o
               Hist´rico completo
                   o
               Trabalho desconectado

   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       3 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes
´
Arvore de trabalho
    diret´rios
         o
    arquivos




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       4 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes
Reposit´rio de conte´do
       o            u
    arquivos




                                                                          a.c
                                                                          v1



   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       5 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes
Reposit´rio de conte´do
       o            u
    arquivos
    commits




                                                          meta
                                                          data a.c b.c
                                                               v1 v9



   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       5 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes
Reposit´rio de conte´do
       o            u
    arquivos
    commits                                                               E
    ancentrais
                                                                          D




                                                                                               time
                                                                   B              C




                                                                              A




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a           5 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes
Directed Acyclic Graph “DAG”



                                                                   H

                                                                   G              E

                                                                   F

                                                                                  D

                                                                          B              C

                                                                                  A



   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a           6 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes

Referencias
     tags




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       7 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes
Referencias
     tags                                                          topicA

     branches                                                                     testing

                                                                                                   release

                                                                   H

                                                                   G              E

                                                                   F

                                                                                  D             v1.5.0



                                                                            B               C

                                                                                  A             v1.4.4




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a           7 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes
HEAD                                                               HEAD

   atual checkout                                                  topicA

   pontos para branch                                                             testing

                                                                                                   release

                                                                   H

                                                                   G              E

                                                                   F

                                                                                  D             v1.5.0



                                                                            B               C

                                                                                  A             v1.4.4




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a           7 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes
HEAD                                                               HEAD

   atual checkout                                                      topicA


   pontos para branch                                                             testing

                                                                                                   release
   muitas vezes solto                                              H

                                                                   G              E

                                                                   F

                                                                                  D             v1.5.0



                                                                          B                 C

                                                                                  A             v1.4.4




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a           7 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM componentes
´
Indice                                                             HEAD


     “staging area”                                                topicA


     O que est´ para ser
               a                                        index
                                                                                  testing

                                                                                                   release
     comitado                                                      H

                                                                   G              E

                                                                   F

                                                                                  D             v1.5.0



                                                                            B               C

                                                                                  A             v1.4.4




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a           7 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM opera¸˜es I
         co
 Inicializa¸˜o
            ca
       init
       checkout
       branch
 Modifica¸˜o ca
       add, delete, rename
       commit
 Informa¸˜oca
       status
       diff
       log

   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       8 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


SCM opera¸˜es II
         co
 Referˆncias
      e
      tag
      branch




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       9 / 84
Conceitos           Source Control Manager
                                                  Reposit´rio
                                                         o             Decentraliza¸˜o
                                                                                   ca
                                                 Usando GIT            Hist´ria
                                                                           o


SCM Centralizado

                                                           checkout
                                                            update
             topicA
                                                                diff
                          testing
                                                                log
                                           release
                                                            commit
             H

              G           E

              F

                          D             v1.5.0



                      B             C

                          A             v1.4.4




       opera¸˜es requerem servidor
            co
                  ponto de falha, funilamento
   Marcello Henrique, faraohh@gmail.com                                              Git o b´sico
                                                                                            a       10 / 84
Conceitos                                     Source Control Manager
                                                         Reposit´rio
                                                                o                                       Decentraliza¸˜o
                                                                                                                    ca
                                                        Usando GIT                                      Hist´ria
                                                                                                            o


SCM Decentralizado

             topicA

                          testing

                                           release
                                                                                                clone             topicA

                                                                                                                               testing

                                                                                                                                                release

             H                                                                                                    H
             G            E

             F
                                                                                                pull              G

                                                                                                                  F
                                                                                                                               E



                          D             v1.5.0
                                                                                                                               D             v1.5.0



                      B

                          A
                                    C
                                        v1.4.4
                                                                                                push                       B

                                                                                                                               A
                                                                                                                                         C
                                                                                                                                             v1.4.4




                                                             clon




                                                                                                              e
                                                     pull
                                                     push




                                                                                                         clon
                                                                                                         pull

                                                                                                                   h
                                                                 e




                                                                                                                  pus
                                                        topicA

                                                                     testing

                                                                                      release

                                                        H

                                                        G            E

                                                        F

                                                                     D             v1.5.0



                                                                 B             C

                                                                     A             v1.4.4




       qualquer um pode ser o servidor
   Marcello Henrique, faraohh@gmail.com                                                                                                         Git o b´sico
                                                                                                                                                       a       11 / 84
Conceitos    Source Control Manager
                                     Reposit´rio
                                            o      Decentraliza¸˜o
                                                               ca
                                    Usando GIT     Hist´ria
                                                       o


Opera¸oes SCM
     c˜



 Decentralizado
     clone
     pull, fetch
     push




  Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                        a       12 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Decentraliza¸˜o
            ca




       Reposit´rio p´blico
              o     u




   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       13 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Decentraliza¸˜o
            ca


    upstream




                      local




       Fazendo um clone local

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       13 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Decentraliza¸˜o
            ca


    upstream




                    pristine


       topic A
                          topic B



       Clonar na rede local ´ mais leve
                            e

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       13 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Decentraliza¸˜o
            ca


    upstream




                    pristine


       topic A
                          topic B



       Empurando mudan¸as entre reposit´rios
                      c                o


   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       13 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Decentraliza¸˜o
            ca


    upstream                                web server




                    pristine


       topic A
                          topic B



       Enviando mudan¸as para servidores p´blicos
                     c                    u


   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       13 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Decentraliza¸˜o
            ca


    upstream                                web server




                    pristine
                                                    another
       topic A
                          topic B



       Compartilhando mudan¸as com redes confi´veis
                           c                 a


   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       13 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Decentraliza¸˜o pode ser bom?
            ca



       Micro commits n˜o intrusivos
                       a
       Opera¸˜o de destacar
            ca
       N˜o h´ pontos simples de falhas
        a a
       Backups s˜o banais
                a




   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       14 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Hist´ria do GIT
    o
       2002
               Linus usa BitKeeper para versionar o Linux
               BK ´ o melhor
                   e
               Desenvolvimento do Linux escala melhor
       April 6, 2005
               Vence a licen¸a do BitMover
                             c
               Linus cria seu pr´prio SCM, “o GIT”
                                o
       April 18, 2005
               GIT pode fundir c´digos, “merge”
                                o
       June 16, 2005
               GIT ´ oficialmente usado para versionar o c´digo do
                   e                                     o
               Linux
       Feb 14, 2007
               GIT 1.5.0 ´ lan¸ado, focando usabilidade
                         e    c
   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       15 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Hist´ria do GIT
    o
       2002
               Linus usa BitKeeper para versionar o Linux
               BK ´ o melhor
                   e
               Desenvolvimento do Linux escala melhor
       April 6, 2005
               Vence a licen¸a do BitMover
                             c
               Linus cria seu pr´prio SCM, “o GIT”
                                o
       April 18, 2005
               GIT pode fundir c´digos, “merge”
                                o
       June 16, 2005
               GIT ´ oficialmente usado para versionar o c´digo do
                   e                                     o
               Linux
       Feb 14, 2007
               GIT 1.5.0 ´ lan¸ado, focando usabilidade
                         e    c
   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       15 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Hist´ria do GIT
    o
       2002
               Linus usa BitKeeper para versionar o Linux
               BK ´ o melhor
                   e
               Desenvolvimento do Linux escala melhor
       April 6, 2005
               Vence a licen¸a do BitMover
                             c
               Linus cria seu pr´prio SCM, “o GIT”
                                o
       April 18, 2005
               GIT pode fundir c´digos, “merge”
                                o
       June 16, 2005
               GIT ´ oficialmente usado para versionar o c´digo do
                   e                                     o
               Linux
       Feb 14, 2007
               GIT 1.5.0 ´ lan¸ado, focando usabilidade
                         e    c
   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       15 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Hist´ria do GIT
    o
       2002
               Linus usa BitKeeper para versionar o Linux
               BK ´ o melhor
                   e
               Desenvolvimento do Linux escala melhor
       April 6, 2005
               Vence a licen¸a do BitMover
                             c
               Linus cria seu pr´prio SCM, “o GIT”
                                o
       April 18, 2005
               GIT pode fundir c´digos, “merge”
                                o
       June 16, 2005
               GIT ´ oficialmente usado para versionar o c´digo do
                   e                                     o
               Linux
       Feb 14, 2007
               GIT 1.5.0 ´ lan¸ado, focando usabilidade
                         e    c
   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       15 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


Hist´ria do GIT
    o
       2002
               Linus usa BitKeeper para versionar o Linux
               BK ´ o melhor
                   e
               Desenvolvimento do Linux escala melhor
       April 6, 2005
               Vence a licen¸a do BitMover
                             c
               Linus cria seu pr´prio SCM, “o GIT”
                                o
       April 18, 2005
               GIT pode fundir c´digos, “merge”
                                o
       June 16, 2005
               GIT ´ oficialmente usado para versionar o c´digo do
                   e                                     o
               Linux
       Feb 14, 2007
               GIT 1.5.0 ´ lan¸ado, focando usabilidade
                         e    c
   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       15 / 84
Conceitos    Source Control Manager
                                      Reposit´rio
                                             o      Decentraliza¸˜o
                                                                ca
                                     Usando GIT     Hist´ria
                                                        o


GIT gets better



       And then realize that nothing is perfect. Git is just
       *closer* to perfect than any other SCM out there.
       −−
       Linus




   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       16 / 84
Conceitos
                                                                 Estrutura
                                                   Reposit´rio
                                                          o
                                                                 Objetos
                                                  Usando GIT


Estrutura
     repository
          HEAD



          topicA

                       testing

                                        release

          H

          G            E

          F

                       D             v1.5.0



                   B             C

                       A             v1.4.4




                                                   O hist´rico
                                                         o

   Marcello Henrique, faraohh@gmail.com                                      Git o b´sico
                                                                                    a       17 / 84
Conceitos
                                                                     Estrutura
                                                   Reposit´rio
                                                          o
                                                                     Objetos
                                                  Usando GIT


Estrutura
     repository                                          index
          HEAD
                                                     100644   20b024 0   bar
                                                     100644   1d52a6 0   baz
          topicA
                                                     100644   20b024 0   sub/fiz
                       testing                       100644   43dbe0 0   sub/foo
                                        release

          H

          G            E

          F

                       D             v1.5.0



                   B             C

                       A             v1.4.4




                                                       ´
                                                       ındices

   Marcello Henrique, faraohh@gmail.com                                            Git o b´sico
                                                                                          a       17 / 84
Conceitos
                                                                      Estrutura
                                                    Reposit´rio
                                                           o
                                                                      Objetos
                                                   Usando GIT


Estrutura
     repository                                           index                      work tree
          HEAD                                                                          .
                                                      100644   20b024 0   bar           |−− bar
                                                      100644   1d52a6 0   baz
          topicA
                                                      100644   20b024 0   sub/fiz       |−− baz
                       testing                        100644   43dbe0 0   sub/foo       ‘−− sub
                                        release                                            |−− fiz
          H                                                                                ‘−− foo
          G            E

          F

                       D             v1.5.0



                   B             C

                       A             v1.4.4




                                                  arquivos edit´veis
                                                               a

   Marcello Henrique, faraohh@gmail.com                                             Git o b´sico
                                                                                           a         17 / 84
Conceitos
                                                                     Estrutura
                                                   Reposit´rio
                                                          o
                                                                     Objetos
                                                  Usando GIT


Estrutura
     repository                                          index                      work tree
          HEAD                                                                         .
                                                     100644   20b024 0   bar           |−− bar
                                                     100644   1d52a6 0   baz
          topicA
                                                     100644   20b024 0   sub/fiz       |−− baz
                       testing                       100644   43dbe0 0   sub/foo       ‘−− sub
                                        release                                           |−− fiz
          H                                                                               ‘−− foo
          G            E

          F

                       D             v1.5.0



                   B             C

                       A             v1.4.4




                                 “staging”: add, remove, rename

   Marcello Henrique, faraohh@gmail.com                                            Git o b´sico
                                                                                          a         17 / 84
Conceitos
                                                                       Estrutura
                                                     Reposit´rio
                                                            o
                                                                       Objetos
                                                    Usando GIT


Estrutura
     repository                                            index                      work tree
          HEAD                                                                           .
                                                       100644   20b024 0   bar           |−− bar
                                                       100644   1d52a6 0   baz
          topicA
                                                       100644   20b024 0   sub/fiz       |−− baz
                       testing                         100644   43dbe0 0   sub/foo       ‘−− sub
                                        release                                             |−− fiz
          H                                                                                 ‘−− foo
          G            E

          F

                       D             v1.5.0



                   B             C

                       A             v1.4.4




                                                  “committing”: commit


   Marcello Henrique, faraohh@gmail.com                                              Git o b´sico
                                                                                            a         17 / 84
Conceitos
                                                                     Estrutura
                                                   Reposit´rio
                                                          o
                                                                     Objetos
                                                  Usando GIT


Estrutura
     repository                                          index                      work tree
          HEAD                                                                         .
                                                     100644   20b024 0   bar           |−− bar
                                                     100644   1d52a6 0   baz
          topicA
                                                     100644   20b024 0   sub/fiz       |−− baz
                       testing                       100644   43dbe0 0   sub/foo       ‘−− sub
                                        release                                           |−− fiz
          H                                                                               ‘−− foo
          G            E

          F

                       D             v1.5.0



                   B             C

                       A             v1.4.4




               “reading tree”: checkout, read-tree, reset


   Marcello Henrique, faraohh@gmail.com                                            Git o b´sico
                                                                                          a         17 / 84
Conceitos
                                                                     Estrutura
                                                   Reposit´rio
                                                          o
                                                                     Objetos
                                                  Usando GIT


Estrutura
     repository                                          index                      work tree
          HEAD                                                                         .
                                                     100644   20b024 0   bar           |−− bar
                                                     100644   1d52a6 0   baz
          topicA
                                                     100644   20b024 0   sub/fiz       |−− baz
                       testing                       100644   43dbe0 0   sub/foo       ‘−− sub
                                        release                                           |−− fiz
          H                                                                               ‘−− foo
          G            E

          F

                       D             v1.5.0



                   B             C

                       A             v1.4.4




       “checking out”: checkout, checkout-index, reset


   Marcello Henrique, faraohh@gmail.com                                            Git o b´sico
                                                                                          a         17 / 84
Conceitos
                                                 Estrutura
                                   Reposit´rio
                                          o
                                                 Objetos
                                  Usando GIT


O reposit´rio
         o
    .git
    |-- HEAD                         referˆncia atual do checkout
                                          e
    |-- config                       arquivo de configura¸˜o do reposit´rio
                                                          ca              o
    |-- description                  arquivo de descri¸˜o do reposit´rio
                                                      ca              o
    |-- hooks
    |      ‘-- ...                   scripts de ganchos
    |-- index                        mudan¸as para commit
                                            c
    |-- info
    |      |-- exclude               configura¸˜o de arquivos para n˜o versionamento
                                               ca                      a
    |      ‘-- refs                  refs?
    |-- logs
    |      ‘-- ...                   “reflog” dados
    |-- objects
    |      |-- XX
    |      |    ‘-- ...              objetos perdidos
    |      |-- info
    |      |    ‘-- packs            informa¸oes sobre pacotes
                                             c˜
    |      ‘-- pack
    |           ‘-- ...              pacotes e ´ındeces
    ‘-- refs
           |-- heads
           |    ‘-- master           ramo master
   Marcello‘-- tags
            Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a     18 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


O reposit´rio
         o


  .git/config
       Configura¸˜o do reposit´rio
               ca            o
  .git/description
       Descri¸˜o do reposit´rio
             ca            o
       Muito usado pelo gitweb
  .git/info/exclude
       Padr˜es para ignorar arquivos
           o




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       19 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
 .git/objects
 |--   23
 |     ‘-- d4bd826aba9e29aaace9411cc175b784edc399
 |--   76
 |     ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3
 |--   c4
 |     ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc
 |--   e7
 |     ‘-- 4be61128eef713459ca4e32398d689fe80864e
 |--   info
 |     ‘-- packs
 ‘--   pack
       |-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx
       ‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack



   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       20 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
 .git/objects
 |--   23
 |     ‘-- d4bd826aba9e29aaace9411cc175b784edc399
 |--   76
 |     ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3
 |--   c4
 |     ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc
 |--   e7
 |     ‘-- 4be61128eef713459ca4e32398d689fe80864e
 |--   info
 |     ‘-- packs
 ‘--   pack
       |-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx
       ‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack

                                   “Objetos perdidos”
   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       21 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
 .git/objects
 |--   23
 |     ‘-- d4bd826aba9e29aaace9411cc175b784edc399
 |--   76
 |     ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3
 |--   c4
 |     ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc
 |--   e7
 |     ‘-- 4be61128eef713459ca4e32398d689fe80864e
 |--   info
 |     ‘-- packs
 ‘--   pack
       |-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx
       ‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack

                                          “pack arquivo”
   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       22 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
Conte´do endere¸´vel
     u         ca


                                                                  type          size

                                                                         data




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a        23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
Conte´do endere¸´vel
     u         ca


                                                                     type           size

                                                                            data




                                                                             SHA1
                                                            52a0ff44aba8599f43a5d821c421af316cb7305




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a         23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
Conte´do endere¸´vel
     u         ca


                                                                     type          size

                                                                            data




                                                            52a0ff44aba8599f43a5d821c421af316cb7305




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a         23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos

Conte´do endere¸´vel
     u         ca




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
4 Tipos
    Blobs
                                                                "blob"            size

                                                                      file data




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a          23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
4 Tipos
    Blobs
    Trees                                                                 "tree"          size

                                                                      040000 tree 205f6b... somedir
                                                                      100644 blob 9daeaf... somefile




                                                           "tree"          size

                                                        040000 blob 257cc5... other




   Marcello Henrique, faraohh@gmail.com                                 Git o b´sico
                                                                               a           23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
4 Tipos
    Blobs
    Trees                                                                  "tree"         size

                                                                      040000 tree 205f6b... somedir
                                                                      100644 blob 9daeaf... somefile




                                                           "tree"          size           "blob"             size

                                                        040000 blob 257cc5... other              file data




   Marcello Henrique, faraohh@gmail.com                                 Git o b´sico
                                                                               a           23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
4 Tipos
    Blobs
    Trees                                                                   "tree"         size

                                                                       040000 tree 205f6b... somedir
                                                                       100644 blob 9daeaf... somefile




                                                           "tree"            size          "blob"             size

                                                        040000 blob 257cc5... other               file data




                                                         "blob"             size

                                                                file data




   Marcello Henrique, faraohh@gmail.com                                 Git o b´sico
                                                                               a            23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
4 Tipos
    Blobs
    Trees                                                              "commit"                 size

    Commits                                                           tree cad6ae...
                                                                      parent 6f0104...
                                                                      author Someone <address>
                                                                      comitter Another <address>
                                                                      commit message




                                                                              "tree"           size

                                                                           040000 tree 205f6b... somedir
                                                                           100644 blob 9daeaf... somefile




                                                           "tree"          size                  "blob"            size

                                                        040000 blob 257cc5... other                    file data




                                                         "blob"           size
   Marcello Henrique, faraohh@gmail.com                                 Git o b´sico
                                                                               a                  23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
4 Tipos                                                            "commit"                                             size

                                                                tree cad6ae...



    Blobs
                                                                parent 6f0104...
                                                                author Someone <address>
                                                                comitter Another <address>
                                                                commit message




    Trees
                                                                            "tree"           size

                                                                         040000 tree 205f6b... somedir
                                                                         100644 blob 9daeaf... somefile




                                                         "tree"          size

                                                      040000 blob 257cc5... other
                                                                                               "blob"

                                                                                                     file data
                                                                                                                 size
                                                                                                                                "commit"                                        size

    Commits
                                                       "blob"           size

                                                            file data



                                                                                                                               tree cad6ae...
                                                                                                                               parent 6f0104...
                                                                                                                               author Someone <address>
                                                                                                                               comitter Another <address>
                                                                                                                               commit message


                                                                                                                                                      "tree"           size

                                                                                                                                                   040000 tree 205f6b... somedir
                                                                                                                                                   100644 blob 9daeaf... somefile




                                                                                                                                   "tree"          size                  "blob"            size

                                                                                                                                040000 blob 257cc5... other                    file data




                                                                                                                                 "blob"           size

                                                                                                                                      file data




   Marcello Henrique, faraohh@gmail.com                                                                                         Git o b´sico
                                                                                                                                       a                                            23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
4 Tipos
    Blobs
    Trees
    Commits




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos
4 Tipos                                                            "commit"                                             size                             "commit"                                size

                                                                tree cad6ae...                                                                          tree cad6ae...



    Blobs
                                                                parent 6f0104...                                                                        parent 6f0104...
                                                                author Someone <address>                                                                author Someone <address>
                                                                comitter Another <address>                                                              comitter Another <address>
                                                                commit message                                                                          commit message




    Trees
                                                                            "tree"           size                                                                                        "tree"           size

                                                                         040000 tree 205f6b... somedir                                                                                040000 tree 205f6b... somedir
                                                                         100644 blob 9daeaf... somefile                                                                               100644 blob 9daeaf... somefile




                                                         "tree"          size

                                                      040000 blob 257cc5... other
                                                                                               "blob"

                                                                                                     file data
                                                                                                                 size
                                                                                                                                  "tag"          size                 "tree"          size

                                                                                                                                                                   040000 blob 257cc5... other
                                                                                                                                                                                                            "blob"

                                                                                                                                                                                                                  file data
                                                                                                                                                                                                                              size




    Commits
                                                       "blob"           size                                                                                        "blob"           size

                                                            file data                                                                                                    file data



                                                                                                                               object cad6ae...
                                                                                                                               type commit
                                                                                                                               tag tag−name
    Tags                                                                                                                       tagger Who <address> + date
                                                                                                                               tag message




   Marcello Henrique, faraohh@gmail.com                                                                                         Git o b´sico
                                                                                                                                       a          23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos

Imut´vel
    a

                                                                type          size

                                                                       data




   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a           23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos

Imut´vel
    a

                                                                type           size

                                                                       data




                                                                type           size

                                                                       data’




   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a            23 / 84
Conceitos
                                                    Estrutura
                                      Reposit´rio
                                             o
                                                    Objetos
                                     Usando GIT


Objetos

Imut´vel
    a

                                                                   type            size

                                                                          data




                                                                   type            size

                                                                          data’




                                                                            SHA1
                                                         8a9fd66b8bb939638564ebfdecc23b5d58070fc8




   Marcello Henrique, faraohh@gmail.com                               Git o b´sico
                                                                             a                23 / 84
Conceitos    Comandos
                                        Reposit´rio
                                               o      Branching
                                       Usando GIT     Remotes


Comandos
Sintaxe




   ° git <options> <command> <options>




     Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                         a       24 / 84
Conceitos     Comandos
                                   Reposit´rio
                                          o       Branching
                                  Usando GIT      Remotes
add                 fast-export           merge-one-file      revert
am                  fast-import           merge-resolve       rm
annotate            fetch                 merge-subtree       send-email
apply               fetch-pack            merge-tree          send-pack
archimport          filter-branch         mergetool           sh-setup
archive             fmt-merge-msg         mktag               shell
bisect              for-each-ref          mktree              shortlog
blame               format-patch          mv                  show
branch              fsck                  name-rev            show-branch
bundle              fsck-objects          pack-objects        show-index
cat-file            gc                    pack-redundant      show-ref
check-attr          get-tar-commit-id     pack-refs           stash
check-ref-format    grep                  parse-remote        status
checkout            gui                   patch-id            stripspace
checkout-index      hash-object           peek-remote         submodule
cherry              http-fetch            prune               svn
cherry-pick         http-push             prune-packed        symbolic-ref
citool              imap-send             pull                tag
clean               index-pack            push                tar-tree
clone               init                  quiltimport         unpack-file
commit              init-db               read-tree           unpack-objects
commit-tree         instaweb              rebase              update-index
config              log                   receive-pack        update-ref
count-objects       lost-found            reflog              update-server-info
cvsexportcommit     ls-files              relink              upload-archive
cvsimport           ls-remote             remote              upload-pack
cvsserver           ls-tree               repack              var
daemon              mailinfo              repo-config         verify-pack
describe            mailsplit             request-pull        verify-tag
diff                merge                 rerere              whatchanged
diff-files          merge-base            reset               write-tree
diff-index          merge-file            rev-list
diff-tree           merge-index           rev-parse           gitk

Marcello Henrique, faraohh@gmail.com                                 Git o b´sico
                                                                            a       25 / 84
Conceitos     Comandos
                                   Reposit´rio
                                          o       Branching
                                  Usando GIT      Remotes
add                 fast-export           merge-one-file      revert
am                  fast-import           merge-resolve       rm
annotate            fetch                 merge-subtree       send-email
apply               fetch-pack            merge-tree          send-pack
archimport          filter-branch         mergetool           sh-setup
archive             fmt-merge-msg         mktag               shell
bisect              for-each-ref          mktree              shortlog
blame               format-patch          mv                  show
branch              fsck                  name-rev            show-branch
bundle              fsck-objects          pack-objects        show-index
cat-file            gc                    pack-redundant      show-ref
check-attr          get-tar-commit-id     pack-refs           stash
check-ref-format    grep                  parse-remote        status
checkout            gui                   patch-id            stripspace
checkout-index      hash-object           peek-remote         submodule
cherry              http-fetch            prune               svn
cherry-pick         http-push             prune-packed        symbolic-ref
citool              imap-send             pull                tag
clean               index-pack            push                tar-tree
clone               init                  quiltimport         unpack-file
commit              init-db               read-tree           unpack-objects
commit-tree         instaweb              rebase              update-index
config              log                   receive-pack        update-ref
count-objects       lost-found            reflog              update-server-info
cvsexportcommit     ls-files              relink              upload-archive
cvsimport           ls-remote             remote              upload-pack
cvsserver           ls-tree               repack              var
daemon              mailinfo              repo-config         verify-pack
describe            mailsplit             request-pull        verify-tag
diff                merge                 rerere              whatchanged
diff-files          merge-base            reset               write-tree
diff-index          merge-file            rev-list
diff-tree           merge-index           rev-parse           gitk

Marcello Henrique, faraohh@gmail.com                                 Git o b´sico
                                                                            a       26 / 84
Conceitos     Comandos
                                   Reposit´rio
                                          o       Branching
                                  Usando GIT      Remotes
add                 fast-export           merge-one-file      revert
am                  fast-import           merge-resolve       rm
annotate            fetch                 merge-subtree       send-email
apply               fetch-pack            merge-tree          send-pack
archimport          filter-branch         mergetool           sh-setup
archive             fmt-merge-msg         mktag               shell
bisect              for-each-ref          mktree              shortlog
blame               format-patch          mv                  show
branch              fsck                  name-rev            show-branch
bundle              fsck-objects          pack-objects        show-index
cat-file            gc                    pack-redundant      show-ref
check-attr          get-tar-commit-id     pack-refs           stash
check-ref-format    grep                  parse-remote        status
checkout            gui                   patch-id            stripspace
checkout-index      hash-object           peek-remote         submodule
cherry              http-fetch            prune               svn
cherry-pick         http-push             prune-packed        symbolic-ref
citool              imap-send             pull                tag
clean               index-pack            push                tar-tree
clone               init                  quiltimport         unpack-file
commit              init-db               read-tree           unpack-objects
commit-tree         instaweb              rebase              update-index
config              log                   receive-pack        update-ref
count-objects       lost-found            reflog              update-server-info
cvsexportcommit     ls-files              relink              upload-archive
cvsimport           ls-remote             remote              upload-pack
cvsserver           ls-tree               repack              var
daemon              mailinfo              repo-config         verify-pack
describe            mailsplit             request-pull        verify-tag
diff                merge                 rerere              whatchanged
diff-files          merge-base            reset               write-tree
diff-index          merge-file            rev-list
diff-tree           merge-index           rev-parse           gitk

Marcello Henrique, faraohh@gmail.com                                 Git o b´sico
                                                                            a       27 / 84
Conceitos     Comandos
                                   Reposit´rio
                                          o       Branching
                                  Usando GIT      Remotes
add                 fast-export           merge-one-file      revert
am                  fast-import           merge-resolve       rm
annotate            fetch                 merge-subtree       send-email
apply               fetch-pack            merge-tree          send-pack
archimport          filter-branch         mergetool           sh-setup
archive             fmt-merge-msg         mktag               shell
bisect              for-each-ref          mktree              shortlog
blame               format-patch          mv                  show
branch              fsck                  name-rev            show-branch
bundle              fsck-objects          pack-objects        show-index
cat-file            gc                    pack-redundant      show-ref
check-attr          get-tar-commit-id     pack-refs           stash
check-ref-format    grep                  parse-remote        status
checkout            gui                   patch-id            stripspace
checkout-index      hash-object           peek-remote         submodule
cherry              http-fetch            prune               svn
cherry-pick         http-push             prune-packed        symbolic-ref
citool              imap-send             pull                tag
clean               index-pack            push                tar-tree
clone               init                  quiltimport         unpack-file
commit              init-db               read-tree           unpack-objects
commit-tree         instaweb              rebase              update-index
config              log                   receive-pack        update-ref
count-objects       lost-found            reflog              update-server-info
cvsexportcommit     ls-files              relink              upload-archive
cvsimport           ls-remote             remote              upload-pack
cvsserver           ls-tree               repack              var
daemon              mailinfo              repo-config         verify-pack
describe            mailsplit             request-pull        verify-tag
diff                merge                 rerere              whatchanged
diff-files          merge-base            reset               write-tree
diff-index          merge-file            rev-list
diff-tree           merge-index           rev-parse           gitk

Marcello Henrique, faraohh@gmail.com                                 Git o b´sico
                                                                            a       28 / 84
Conceitos     Comandos
                                   Reposit´rio
                                          o       Branching
                                  Usando GIT      Remotes
add                 fast-export           merge-one-file      revert
am                  fast-import           merge-resolve       rm
annotate            fetch                 merge-subtree       send-email
apply               fetch-pack            merge-tree          send-pack
archimport          filter-branch         mergetool           sh-setup
archive             fmt-merge-msg         mktag               shell
bisect              for-each-ref          mktree              shortlog
blame               format-patch          mv                  show
branch              fsck                  name-rev            show-branch
bundle              fsck-objects          pack-objects        show-index
cat-file            gc                    pack-redundant      show-ref
check-attr          get-tar-commit-id     pack-refs           stash
check-ref-format    grep                  parse-remote        status
checkout            gui                   patch-id            stripspace
checkout-index      hash-object           peek-remote         submodule
cherry              http-fetch            prune               svn
cherry-pick         http-push             prune-packed        symbolic-ref
citool              imap-send             pull                tag
clean               index-pack            push                tar-tree
clone               init                  quiltimport         unpack-file
commit              init-db               read-tree           unpack-objects
commit-tree         instaweb              rebase              update-index
config              log                   receive-pack        update-ref
count-objects       lost-found            reflog              update-server-info
cvsexportcommit     ls-files              relink              upload-archive
cvsimport           ls-remote             remote              upload-pack
cvsserver           ls-tree               repack              var
daemon              mailinfo              repo-config         verify-pack
describe            mailsplit             request-pull        verify-tag
diff                merge                 rerere              whatchanged
diff-files          merge-base            reset               write-tree
diff-index          merge-file            rev-list
diff-tree           merge-index           rev-parse           gitk

Marcello Henrique, faraohh@gmail.com                                 Git o b´sico
                                                                            a       29 / 84
Conceitos    Comandos
                                     Reposit´rio
                                            o      Branching
                                    Usando GIT     Remotes


Comandos de ajuda


 git help
     Lista dos comandos mais comuns
 git <command> -h
     breve ajuda
 man git-<command>
 git help <command>
 git <command> --help
      p´ginas de manual
       a



  Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                      a       30 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Configura¸˜o do usu´rio
        ca        a


 °HOME/.gitconfig


 ° git config --global user.name "Seu nome"
 ° git config --global user.email usuario@dominio.com


 ° git config --global color.pager true
 ° git config --global color.ui auto




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       31 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Configura¸˜o do usu´rio
        ca        a


 °HOME/.gitconfig


 ° git config --global user.name "Seu nome"
 ° git config --global user.email usuario@dominio.com


 ° git config --global color.pager true
 ° git config --global color.ui auto




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       31 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Configura¸˜o do usu´rio
        ca        a

 ° cat .gitconfig
 [user]
               name = "Marcello Henrique"
               email = "faraohh@gmail.com"
 [core]
               pager = less -FRSX
               editor = vim
 [color]
               ui = auto
 [merge]
               tool = vimdiff



   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       32 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Comando de inicializa¸˜o
                     ca



  ° git init
       cria a ´rea do projeto
              a
       cria o diret´rio .git
                   o




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       33 / 84
Conceitos    Comandos
                                     Reposit´rio
                                            o      Branching
                                    Usando GIT     Remotes


O que commitar?


      adicionar
      ° git add file
      ° git add .
      remover
      ° git rm file
      renomear
      ° git mv old new




  Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                      a       34 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Ignorar arquivos




  ° cat .gitignore
  *.o
  *~




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       35 / 84
Conceitos    Comandos
                                     Reposit´rio
                                            o      Branching
                                    Usando GIT     Remotes


Como commitar?



 ° git commit -a -m‘‘some comment’’
      Vai criar um commit de tudo ou somente dos itens
      trabalhados (staged)




  Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                      a       36 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° mkdir project
                                                        HEAD
° cd project
° git init                                             master        index




                                                                                       repository
                                                                                     working tree
                                                      .git




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       37 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° echo test > test
                                                        HEAD


                                                       master        index




                                                                                       repository
                                                                                     working tree
                                                      .git
                                                      test




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       37 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° echo test > test
                                                        HEAD
° git add test
                                                       master           index




                                                        tree
                                                      52a266...

                                                         blob
                                                       9daefb...   "test"




                                                                                          repository
                                                                                        working tree
                                                      .git
                                                      test




   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a       37 / 84
Conceitos    Comandos
                                        Reposit´rio
                                               o      Branching
                                       Usando GIT     Remotes


° echo test > test
                                                          HEAD
° git add test
                                                         master           index
° git commit -m‘‘test’’
Created initial commit 6f01040: test                      commit
1 files changed, 1 insertions(+), 0 deletions(-)         6f0104...
create mode 100644 test
                                                          tree
                                                        52a266...

                                                           blob
                                                         9daefb...   "test"




                                                                                            repository
                                                                                          working tree
                                                        .git
                                                        test




     Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                            a       37 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° echo test > test
                                                        HEAD
° git add test
                                                       master              index
° git commit -m‘‘test’’
                                                        commit
                                                       6f0104...
° mkdir dir                                             tree               tree
° echo foo > dir/foo                                  52a266...          cad6ae...

° git add dir/foo                                        blob              tree
                                                                                       "dir"
                                                       9daefb...         205f6b...
                                                         "test"
                                                                           blob
                                                                         257cc5...     "foo"



                                                                                             repository
                                                                                           working tree
                                                      .git
                                                      test
                                                      dir/foo



   Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                          a          37 / 84
Conceitos    Comandos
                                        Reposit´rio
                                               o      Branching
                                       Usando GIT     Remotes


° echo test > test
                                                                             HEAD
° git add test
                                                                            master                index
° git commit -m‘‘test’’
                                                          commit            commit
                                                         6f0104...          52a0ff...
° mkdir dir                                               tree               tree
° echo foo > dir/foo                                    52a266...          cad6ae...

° git add dir/foo                                          blob              tree
                                                                                          "dir"
                                                         9daefb...         205f6b...
                                                           "test"
° git commit -m‘‘foo’’                                                       blob
                                                                           257cc5...      "foo"
Created commit 52a0ff4: foo
1 files changed, 1 insertions(+),
0 deletions(-)

create mode 100644 dir/foo                                                                      repository
                                                                                              working tree
                                                        .git
                                                        test
                                                        dir/foo



     Marcello Henrique, faraohh@gmail.com                            Git o b´sico
                                                                            a           37 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca


 ° git status


 mostra. . .
     staged (Modificados)
     unstaged (N˜o modificados)
                a
     untracked (N˜o versionados)
                 a




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       38 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca


 ° git diff
     Mudan¸as entre ´
          c         ındice e os arquivos de trabalho
 ° git diff --cached
     Mudan¸as entre o HEAD e o ´
          c                       ındice
 ° git diff HEAD
     Mudan¸as entre o HEAD e os arquivos de trabalho
          c
 ° git diff °commit °commit
     Mudan¸as entre dois commits
          c



   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       39 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca


 ° git diff
     Mudan¸as entre ´
          c         ındice e os arquivos de trabalho
 ° git diff --cached
     Mudan¸as entre o HEAD e o ´
          c                       ındice
 ° git diff HEAD
     Mudan¸as entre o HEAD e os arquivos de trabalho
          c
 ° git diff °commit °commit
     Mudan¸as entre dois commits
          c



   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       39 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca


 ° git diff
     Mudan¸as entre ´
          c         ındice e os arquivos de trabalho
 ° git diff --cached
     Mudan¸as entre o HEAD e o ´
          c                       ındice
 ° git diff HEAD
     Mudan¸as entre o HEAD e os arquivos de trabalho
          c
 ° git diff °commit °commit
     Mudan¸as entre dois commits
          c



   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       39 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca


 ° git diff
     Mudan¸as entre ´
          c         ındice e os arquivos de trabalho
 ° git diff --cached
     Mudan¸as entre o HEAD e o ´
          c                       ındice
 ° git diff HEAD
     Mudan¸as entre o HEAD e os arquivos de trabalho
          c
 ° git diff °commit °commit
     Mudan¸as entre dois commits
          c



   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       39 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 specific commit
           full hash                 6bb1270ffb60cbfef87266d2d4b4abe4218d9c6
           short hash                6bb127

           tag                       v1.5.6.1
           local branch              master
           remote branch             origin/master
 ID. . .
           by message                “:/some text”

           checkout                  HEAD
           last fetch                FETCH HEAD
           previous head             ORIG HEAD
           ...

   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       40 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca



 Um commit antes do HEAD



                            HEAD^              ==       HEAD∼1




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       41 / 84
Conceitos         Comandos
                                      Reposit´rio
                                             o           Branching
                                     Usando GIT          Remotes


Inspe¸˜o
     ca



 Alguns commits antes do HEAD



                          HEAD^^^                   ==         HEAD∼3




   Marcello Henrique, faraohh@gmail.com                              Git o b´sico
                                                                            a       42 / 84
Conceitos         Comandos
                                      Reposit´rio
                                             o           Branching
                                     Usando GIT          Remotes


Inspe¸˜o
     ca



 Alguns commits antes do master



                         master^^^                  ==         master∼3




   Marcello Henrique, faraohh@gmail.com                              Git o b´sico
                                                                            a       43 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca



 Vocˆ quer ver os de ontem?
    e



              @{yesterday}                  ==       HEAD@{yesterday}




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       44 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca



 Que tal my-other-branch em primeiro de Junho?



                             my-other-branch@{June.1}




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       45 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca



 Algumas mudan¸as atr´s do master?
              c      a



                                          master@{3}




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       46 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 Visualiza¸˜o do ´ltimo commit. . .
          ca     u

 ° git show
 commit 83b2d051814e884a8e264127ed47552a5dcf6c1d
 Author: Bart Trojanowski <bart@jukie.net>
 Date:   Thu Jul 3 21:44:39 2008 -0400

     changed one line

 diff --git a/test b/test
 index 808a2c4..99810fa 100644
 --- a/test
 +++ b/test
 @@ -1,3 +1,3 @@
  Some old text before the change.
 -Some text for removal.
 +Replacement line.
  Some old text after the change.



   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       47 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 Somente as estat´
                 ısticas. . .

 ° git show --stat
 commit 83b2d051814e884a8e264127ed47552a5dcf6c1d
 Author: Bart Trojanowski <bart@jukie.net>
 Date:   Thu Jul 3 21:44:39 2008 -0400

       changed one line

  test |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       48 / 84
Conceitos    Comandos
                                        Reposit´rio
                                               o      Branching
                                       Usando GIT     Remotes


Inspe¸˜o
     ca
 Igual as infoma¸˜es de estado do SVN. . .
                co

 ° git show --name-status
 commit 3d3d2989b817af3fd4fa6d63f200113bd6c94bdb
 Author: Bart Trojanowski <bart@jukie.net>
 Date:   Thu Jul 3 22:59:13 2008 -0400

         something more interesting

 A               sub/bar
 D               sub/foo
 M               test



     Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                         a       49 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 Rever qualquer outro commit. . .

 ° git      show      HEAD
 ° git      show      HEAD^^^
 ° git      show      master~10
 ° git      show      master@{May.16}
 ...




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       50 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 Mostrar um arquivo (ou ´rvore) no hist´rico. . .
                        a              o

 ° git show HEAD:file
 contents...




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       51 / 84
Conceitos    Comandos
                                        Reposit´rio
                                               o      Branching
                                       Usando GIT     Remotes


Inspe¸˜o
     ca
 Veja o hist´rico dos commits. . .
            o

 ° git log
 commit 3d3d2989b817af3fd4fa6d63f200113bd6c94bdb
 Author: Bart Trojanowski <bart@jukie.net>
 Date:   Thu Jul 3 22:59:13 2008 -0400

     most recent commit

 commit 83b2d051814e884a8e264127ed47552a5dcf6c1d
 Author: Bart Trojanowski <bart@jukie.net>
 Date:   Thu Jul 3 21:44:39 2008 -0400

     second most recent

 commit 1cc1b35a611c39f49842e2ca28d40886c1ae9b7c
 Author: Bart Trojanowski <bart@jukie.net>
 Date:   Thu Jul 3 21:44:05 2008 -0400

     middle commit

 commit 411515f51a78d66a27a7d56ebe9f70dbd2bff008
 Author: Bart Trojanowski <bart@jukie.net>
 Date:   Thu Jul 3 21:43:36 2008 -0400

     second oldest

 . . Marcello Henrique, faraohh@gmail.com
     .                                                            Git o b´sico
                                                                         a       52 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca




                             git log ´ impressionante!
                                     e




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       53 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 Limita por faixa. . .

 ° git log tag..branch
 ° git log HEAD~10..
 ° git log branch1 branch2 ^common

 ° git log -10
 ° git log -10 master@{yesterday}

 ° git log --since="May 1" --until="June 1"




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       54 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 Limita por atributos do commit. . .

 ° git log --author=fred
 ° git log --committer=joe
 ° git log --grep="commit.*message.*text"




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       55 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 Presquisa por uma mudan¸a. . .
                        c

 ° git log -S‘‘some code change’’
  ° git log --pickaxe-regex -S‘‘some.*code.*change’’




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       56 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 Limita por mudan¸as espec´
                 c        ıficas no caminho. . .

 ° git log -- some/file




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       57 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Inspe¸˜o
     ca
 Outros modos de pesquisa. . .

 ° git grep -e "pattern" -- some/file
 ° git grep -e "pattern" branch -- some/file




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       58 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Referˆncias
     e



       Mais r´pido
             a
       Mais male´vel
                  a
       Discart´vel
              a
       3 tipos b´sico
                a




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       59 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Referˆncias
     e



       Mais r´pido
             a
       Mais male´vel
                  a
       Discart´vel
              a
       3 tipos b´sico
                a




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       59 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Referˆncias
     e



       Mais r´pido
             a
       Mais male´vel
                  a
       Discart´vel
              a
       3 tipos b´sico
                a




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       59 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Referˆncias
     e



       Mais r´pido
             a
       Mais male´vel
                  a
       Discart´vel
              a
       3 tipos b´sico
                a




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       59 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Local branches



       ° git branch -l
       branch1
       branch2
       * master
       .git/refs/heads/<branch>




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       60 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


tags



       ° git tag -l
       tag1
       tag2
       tag3
       .git/refs/tags/<tag>




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       61 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Remote branches



       ° git branch -r
       fred/master
       joe/master
       joe/another-branch
       .git/refs/remotes/<remote>/<branch>




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       62 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Remote branches




 ° git branch name commit
     Nova branch “name” sobre HEAD ou espec´
                                           ıfico commit




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       63 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Remote branches




 ° git checkout -f name
     Atualiza os arquivos no branch “name”
     Optionalmente for¸a subscrever mudan¸as nos arquivos
                       c                  c




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       64 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Remote branches




 ° git checkout -b name commit
     Atualiza os arquivos criando “name” branch




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       65 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Remote branches


 ° git checkout name
 error: You have local changes to ’filename’;
 cannot switch branches.

 ° git checkout -m name
     merge outstanding diff onto branch “name”
     Pode resultar em conflito




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       66 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Come¸amos com uma ´rvore
    c             a




                                                                           A             master




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git checkout -b
bug-fix




                                                        HEAD

                                                       bug−fix              A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git commit -a -m‘‘B’’




                                                        HEAD

                                                       bug−fix        B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git commit -a -m‘‘C’’




                                                        HEAD

                                                       bug−fix        C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Vocˆ tem uma id´ia arrasadora
   e           e




                                                        HEAD

                                                       bug−fix        C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Vocˆ tem uma id´ia arrasadora
   e           e

° git checkout -b wicked
master




                                                       bug−fix        C              HEAD

                                                                      B             wicked

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git commit -a -m‘‘D’’




                                                                                          HEAD

                                                                                D         wicked

                                                       bug−fix        C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git commit -a -m‘‘E’’




                                                                                          HEAD

                                                                                E         wicked

                                                                                D

                                                       bug−fix        C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Vocˆ chegou em um ponto
    e
aceit´vel
     a




                                                                                          HEAD

                                                                                E         wicked

                                                                                D

                                                       bug−fix        C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Vocˆ chegou em um ponto
    e
aceit´vel
     a

° git tag -a -m‘‘got
somewhere’’ good
                                                                                          HEAD

                                                                                          wicked

                                                                                E         good

                                                                                D

                                                       bug−fix        C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Gerenciar corre¸˜es de bug
               co




                                                                                          HEAD

                                                                                          wicked

                                                                                E         good

                                                                                D

                                                       bug−fix        C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git checkout bug-fix




                                                                                          wicked

                                                                                E         good

                                                        HEAD                    D

                                                       bug−fix        C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git commit -a -m‘‘F’’




                                                        HEAD

                                                       bug−fix        F                   wicked

                                                                                E         good

                                                                                D

                                                                      C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Vocˆ s´ pensa na sua vers˜o
   e o                   a
boa. . .



                                                        HEAD

                                                       bug−fix        F                   wicked

                                                                                E         good

                                                                                D

                                                                      C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Vocˆ s´ pensa na sua vers˜o
   e o                   a
boa. . .

° git checkout wicked
                                                                                          HEAD

                                                       bug−fix        F                   wicked

                                                                                E         good

                                                                                D

                                                                      C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


. . . Ent˜o vocˆ termina sua
         a     e
funcionalidade arrasadora

° git commit -a -m‘‘G’’
                                                                                          HEAD

                                                                                G         wicked

                                                       bug−fix        F

                                                                                E         good

                                                                                D

                                                                      C

                                                                      B

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Funcionalidade pronta

bug est˜o corrigidos
       a
                                                                                           HEAD
. . . hora de mesclar!
                                                                                 G         wicked

                                                        bug−fix        F

                                                                                 E         good

                                                                                 D

                                                                       C

                                                                       B

                                                                             A             master




    Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                         a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git checkout master




                                                                                G         wicked

                                                       bug−fix        F

                                                                                E         good

                                                                                D

                                                                      C

                                                                      B                   HEAD

                                                                            A             master




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git reset --hard bug-fix


                                                                   HEAD

                                                                   master

                                                                                G         wicked

                                                       bug−fix        F

                                                                                E         good

                                                                                D

                                                                      C

                                                                      B

                                                                            A




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


° git merge wicked
                                                                   HEAD

                                                                   master


                                                                      H

                                                                                G         wicked

                                                       bug−fix        F

                                                                                E         good

                                                                                D

                                                                      C

                                                                      B

                                                                            A




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       67 / 84
Conceitos    Comandos
                                     Reposit´rio
                                            o      Branching
                                    Usando GIT     Remotes


Mesclando



 ° git merge <branch> ...
      Mescla m´ltiplas branches
              u
      Cria commit com 2+ pais
      Pode causar conflito
      Nota: Requer interven¸˜o do usu´rio
                           ca        a




  Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                      a       68 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Mesclando
Mais um exemplo




                                                                         one


                                                                           A




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       69 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Mesclando
Duas branches




                                                                one                 two


                                                                  B                C


                                                                            A




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a       69 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Mesclando
° git checkout -b three
two




                                                                one      three       two


                                                                  B                 C


                                                                            A




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a        69 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Mesclando
° git checkout -b three
two
° git merge one




                                                                         three

                                                                one                  two
                                                                            D


                                                                  B                 C


                                                                            A




   Marcello Henrique, faraohh@gmail.com                          Git o b´sico
                                                                        a        69 / 84
Conceitos    Comandos
                                     Reposit´rio
                                            o      Branching
                                    Usando GIT     Remotes


Mesclando




                                                                       three

                                                       one                               two
                                                                          G

                                                        E                                 F


                                                                          D


                                                                B                 C


                                                                          A




  Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                      a        69 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Mesclando
° git checkout three




                                                                        three

                                                        one                               two
                                                                           G

                                                         E                                 F


                                                                           D


                                                                 B                 C


                                                                           A




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a        69 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Mesclando
° git checkout three
° git merge one two
                                                                        three


                                                                           H



                                                        one                               two
                                                                           G

                                                         E                                 F


                                                                           D


                                                                 B                 C


                                                                           A




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a        69 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Mesclando
° git checkout three
° git merge one two
                                                                        three


                                                                           H



                                                        one                               two
              “octopus”                                                    G

                                                         E                                 F


                                                                           D


                                                                 B                 C


                                                                           A




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a        69 / 84
Conceitos    Comandos
                                     Reposit´rio
                                            o      Branching
                                    Usando GIT     Remotes


Rebase



 ° git rebase <branch>
      Tranfere novos trabalhos para uma nova base
      Pode causar conflito
      Nota: Requer interven¸˜o do usu´rio
                            ca        a




  Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                      a       70 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c




                              Temos 2 ´rvores identicas
                                      a

   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                  rebase
                               test


                                F                                                test


                                E                                                 E

                                D                                                 D

       master          C                                 master         C

                       B                                                B

                       A                                                A




  ° git merge master

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a            71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                  rebase
                               test


                                F                                                test


                                E                                                 E

                                D                                                 D

       master          C                                 master         C

                       B                                                B

                       A                                                A




                                            Que f´cil!
                                                 a

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a            71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                  rebase
                               test


                                F                                                test


                                E                                                 E

                                D                                                 D

       master          C                                 master         C

                       B                                                B

                       A                                                A




                                                             ° git rebase master

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a            71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                 rebase
                               test

                                                                      test
                                F

                                                                       E’
                                E                                                E
                                                                       D’
                                D                                                D

       master          C                                 master         C

                       B                                                B

                       A                                                A




                                                             ° git rebase master

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a           71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                 rebase
                               test

                                                                      test
                                F

                                                                       E’
                                E                                                E
                                                                       D’          e
                                D                                                D
                                                                                 d
       master          C                                 master         C

                       B                                                B

                       A                                                A




                                                             ° git rebase master

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a           71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                 rebase
                               test

                                                                      test
                                F

                                                                       E’
                                E                                                E
                                                                       D’          e
                                D                                                D
                                                                                 d
       master          C                                 master         C

                       B                                                B

                       A                                                A




                                                             ° git rebase master

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a           71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                 rebase
                               test

                                                                      test
                                F

                                                                       E’
                                E                                                E
                                                                       D’          e
                                D                                                D
                                                                                 d
       master          C                                 master         C

                       B                                                B

                       A                                                A




                                                             ° git rebase master

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a           71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                 rebase
                               test

                                                                      test
                                F

                                                                       E’
                                E                                                E
                                                                       D’          e
                                D                                                D
                                                                                 d
       master          C                                 master         C

                       B                                                B

                       A                                                A




                                                             ° git rebase master

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a           71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                 rebase
                               test

                                                                      test
                                F

                                                                       E’
                                E                                                E
                                                                       D’          e
                                D                                                D
                                                                                 d
       master          C                                 master         C

                       B                                                B

                       A                                                A




                                                             ° git rebase master

   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a           71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                                 rebase
                               test

                                                                      test
                                F

                                                                       E’
                                E                                                E
                                                                       D’
                                D                                                D

       master          C                                 master         C

                       B                                                B

                       A                                                A




                                                             ° git rebase master


   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a           71 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Diferen¸a entre merge e rebase
       c
  merge                                                                             rebase
                               test

                                                                      test
                                F

                                                                       E’
                                E
                                                                       D’
                                D

       master          C                                 master         C

                       B                                                B

                       A                                                A




   Marcello Henrique, faraohh@gmail.com                           Git o b´sico
                                                                         a       71 / 84
Conceitos    Comandos
                                     Reposit´rio
                                            o      Branching
                                    Usando GIT     Remotes


Remotes



 ° git clone <remote>
      Replica reposit´rio remoto
                     o
      Preenche o novo reposit´rio
                              o
      Atualiza novas ´rvores de trabalho
                     a




  Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                      a       72 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Protocolos

       Reposit´rio local
              o
       /home/git/project.git/
       file:///home/git/project.git/
       Protocolo http
       http://repo.or.cz/r/git.git
       Protocolo nativo git
       git://repo.or.cz/git.git
       Protocolo ssh
       ssh://bart@jukie.net/~git/project.git/
       bart@jukie.net/~git/project.git/

   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       73 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Protocolos

       Reposit´rio local
              o
       /home/git/project.git/
       file:///home/git/project.git/
       Protocolo http
       http://repo.or.cz/r/git.git
       Protocolo nativo git
       git://repo.or.cz/git.git
       Protocolo ssh
       ssh://bart@jukie.net/~git/project.git/
       bart@jukie.net/~git/project.git/

   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       73 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Protocolos

       Reposit´rio local
              o
       /home/git/project.git/
       file:///home/git/project.git/
       Protocolo http
       http://repo.or.cz/r/git.git
       Protocolo nativo git
       git://repo.or.cz/git.git
       Protocolo ssh
       ssh://bart@jukie.net/~git/project.git/
       bart@jukie.net/~git/project.git/

   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       73 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Protocolos

       Reposit´rio local
              o
       /home/git/project.git/
       file:///home/git/project.git/
       Protocolo http
       http://repo.or.cz/r/git.git
       Protocolo nativo git
       git://repo.or.cz/git.git
       Protocolo ssh
       ssh://bart@jukie.net/~git/project.git/
       bart@jukie.net/~git/project.git/

   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       73 / 84
repo.or.cz


      master


       F
       C       v0.2.0


       B
       A       v0.1.0




git://repo.or.cz/project.git
repo.or.cz


       master


        F
        C       v0.2.0


        B
        A       v0.1.0




° git clone ssh+git://repo.or.cz/project.git
repo.or.cz                          local


             master


              F
              C       v0.2.0


              B
              A       v0.1.0




° git clone ssh+git://repo.or.cz/project.git
Initialize project/.git
Initialized empty Git repository in /tmp/project/.git/
remote: Counting objects: 77575, done.
remote: Compressing objects: 100% (26407/26407), done.
remote: Total 77575 (delta 55750), reused 71007 (delta 49775)
Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.
Resolving deltas: 100% (55750/55750), done.
Checking out files: 100% (1396/1396), done.
repo.or.cz                          local


             master


              F
              C       v0.2.0


              B
              A       v0.1.0




° git clone ssh+git://repo.or.cz/project.git
Initialize project/.git
Initialized empty Git repository in /tmp/project/.git/
remote: Counting objects: 77575, done.
remote: Compressing objects: 100% (26407/26407), done.
remote: Total 77575 (delta 55750), reused 71007 (delta 49775)
Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.
Resolving deltas: 100% (55750/55750), done.
Checking out files: 100% (1396/1396), done.
repo.or.cz                          local


             master


              F
              C       v0.2.0


              B
              A       v0.1.0




° git clone ssh+git://repo.or.cz/project.git build-tree
Initialize build-tree/.git
Initialized empty Git repository in /tmp/build-tree/.git/
remote: Counting objects: 77575, done.
remote: Compressing objects: 100% (26407/26407), done.
remote: Total 77575 (delta 55750), reused 71007 (delta 49775)
Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.
Resolving deltas: 100% (55750/55750), done.
Checking out files: 100% (1396/1396), done.
repo.or.cz                          local


             master


              F
              C       v0.2.0


              B
              A       v0.1.0




° git clone ssh+git://repo.or.cz/project.git
Initialize project/.git
Initialized empty Git repository in /tmp/project/.git/
remote: Counting objects: 77575, done.
remote: Compressing objects: 100% (26407/26407), done.
remote: Total 77575 (delta 55750), reused 71007 (delta 49775)
Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.
Resolving deltas: 100% (55750/55750), done.
Checking out files: 100% (1396/1396), done.
° git clone ssh+git://repo.or.cz/project.git
Initialize project/.git
Initialized empty Git repository in /tmp/project/.git/
repo.or.cz                           local


             master                     origin/master


              F                              F
              C       v0.2.0                 C          v0.2.0


              B                              B
              A       v0.1.0                 A          v0.1.0




° git clone ssh+git://repo.or.cz/project.git
Initialize project/.git
Initialized empty Git repository in /tmp/project/.git/
remote: Counting objects: 77575, done.
remote: Compressing objects: 100% (26407/26407), done.
remote: Total 77575 (delta 55750), reused 71007 (delta 49775)
Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.
Resolving deltas: 100% (55750/55750), done.
Checking out files: 100% (1396/1396), done.
"origin"                          local


             master                     origin/master


              F                              F
              C       v0.2.0                 C          v0.2.0


              B                              B
              A       v0.1.0                 A          v0.1.0




° git clone ssh+git://repo.or.cz/project.git
Initialize project/.git
Initialized empty Git repository in /tmp/project/.git/
remote: Counting objects: 77575, done.
remote: Compressing objects: 100% (26407/26407), done.
remote: Total 77575 (delta 55750), reused 71007 (delta 49775)
Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.
Resolving deltas: 100% (55750/55750), done.
Checking out files: 100% (1396/1396), done.
"origin"                          local


             master                     origin/master


              F                              F          master


              C       v0.2.0                 C          v0.2.0


              B                              B
              A       v0.1.0                 A          v0.1.0




                                       /tmp/project/
                                       |−−.git/
                                       |−− bar
                                       ‘−− sub/
                                           ‘−− foo




° git clone ssh+git://repo.or.cz/project.git
Initialize project/.git
Initialized empty Git repository in /tmp/project/.git/
remote: Counting objects: 77575, done.
remote: Compressing objects: 100% (26407/26407), done.
remote: Total 77575 (delta 55750), reused 71007 (delta 49775)
Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done.
Resolving deltas: 100% (55750/55750), done.
Checking out files: 100% (1396/1396), done.
"origin"                local


            master            origin/master


                F                  F          master


                C    v0.2.0        C          v0.2.0


                B                  B
                A    v0.1.0        A          v0.1.0




                              /tmp/project/
                              |−−.git/
                              |−− bar
                              ‘−− sub/
                                  ‘−− foo




° git branch -a                                 ° git tag -l
* master                                        v0.1.0
origin/master                                   v0.2.0
"origin"                local

    master


     H                origin/master


G    F                     F          master


     C       v0.2.0        C          v0.2.0


     B                     B
     A       v0.1.0        A          v0.1.0




                      /tmp/project/
                      |−−.git/
                      |−− bar
                      ‘−− sub/
                          ‘−− foo
"origin"                local

        master


         H                origin/master


    G    F                     F          master


         C       v0.2.0        C          v0.2.0


         B                     B
         A       v0.1.0        A          v0.1.0




                          /tmp/project/
                          |−−.git/
                          |−− bar
                          ‘−− sub/
                              ‘−− foo




° git fetch
"origin"                          local

             master


              H                         origin/master


        G     F                              F          master


              C       v0.2.0                 C          v0.2.0


              B                              B
              A       v0.1.0                 A          v0.1.0




                                       /tmp/project/
                                       |−−.git/
                                       |−− bar
                                       ‘−− sub/
                                           ‘−− foo




° git fetch
remote: Counting objects: 236, done.
remote: Compressing objects: 100% (190/190), done.
remote: Total 190 (delta 170), reused 0 (delta 0)
Receiving objects: 100% (190/190), 69.53 KiB, done.
Resolving deltas: 100% (170/170), completed with 40 local objects.
From mail.jukie.net:work/oclug/intro-to-git
573ff80..06e3703 master -> origin/master
"origin"                          local

             master


              H                         origin/master


        G     F                              F          master


              C       v0.2.0                 C          v0.2.0


              B                              B
              A       v0.1.0                 A          v0.1.0




                                       /tmp/project/
                                       |−−.git/
                                       |−− bar
                                       ‘−− sub/
                                           ‘−− foo




° git fetch
remote: Counting objects: 236, done.
remote: Compressing objects: 100% (190/190), done.
remote: Total 190 (delta 170), reused 0 (delta 0)
Receiving objects: 100% (190/190), 69.53 KiB, done.
Resolving deltas: 100% (170/170), completed with 40 local objects.
From mail.jukie.net:work/oclug/intro-to-git
573ff80..06e3703 master -> origin/master
"origin"                           local

             master                      origin/master


              H                               H
        G     F                      G        F          master


              C       v0.2.0                  C          v0.2.0


              B                               B
              A       v0.1.0                  A          v0.1.0




                                       /tmp/project/
                                       |−−.git/
                                       |−− bar
                                       ‘−− sub/
                                           ‘−− foo




° git fetch
remote: Counting objects: 236, done.
remote: Compressing objects: 100% (190/190), done.
remote: Total 190 (delta 170), reused 0 (delta 0)
Receiving objects: 100% (190/190), 69.53 KiB, done.
Resolving deltas: 100% (170/170), completed with 40 local objects.
From mail.jukie.net:work/oclug/intro-to-git
573ff80..06e3703 master -> origin/master
"origin"                       local

    master                   origin/master


     H                            H
G    F                   G        F          master


     C       v0.2.0               C          v0.2.0


     B                            B
     A       v0.1.0               A          v0.1.0




                           /tmp/project/
                           |−−.git/
                           |−− bar
                           ‘−− sub/
                               ‘−− foo




                 . . . Nenhuma mudan¸a no disco?
                                    c
"origin"                     local

    master                 origin/master


     H                          H
G    F                 G        F          master


     C       v0.2.0             C          v0.2.0


     B                          B
     A       v0.1.0             A          v0.1.0




                         /tmp/project/
                         |−−.git/
                         |−− bar
                         ‘−− sub/
                             ‘−− foo




               git fetch somente atualiza DAG
"origin"                       local

    master                   origin/master


     H                            H          master


G    F                   G        F
     C        v0.2.0              C          v0.2.0


     B                            B
     A        v0.1.0              A          v0.1.0




                           /tmp/project/
                           |−−.git/
                           |−− bar
                           ‘−− sub/
                               |−−fiz
                               ‘−− foo




                   git merge origin/master
             fast-forwards master para origin/master
                  e atualiza a ´rvore de trabalho
                               a
"origin"                    local

    master                origin/master


     H                         H          master


G    F                G        F
     C       v0.2.0            C          v0.2.0


     B                         B
     A       v0.1.0            A          v0.1.0




                      /tmp/project/
                      |−−.git/
                      |−− bar
                      ‘−− sub/
                          |−− fiz
                          ‘−− foo




         git fetch + git merge = git pull
"origin"                      local

    master                  origin/master


     H                           H          master


G    F                  G        F
     C       v0.2.0              C          v0.2.0


     B                           B
     A       v0.1.0              A          v0.1.0




                         /tmp/project/
                         |−−.git/
                         |−−bar
                         ‘−− sub/
                             |−−fiz
                             ‘−− foo




               Vamos fazer alguns commit locais
"origin"                    local

        master                origin/master


         H                         H          master


    G    F                G        F
         C       v0.2.0            C          v0.2.0


         B                         B
         A       v0.1.0            A          v0.1.0




                          /tmp/project/
                          |−−.git/
                          |−−bar
                          ‘−− sub/
                              |−−fiz
                              ‘−− foo




° git commit -a -m‘‘I’’
"origin"                            local

                                                    master


             master                 origin/master     I
              H                               H
        G     F                      G        F
              C       v0.2.0                  C        v0.2.0


              B                               B
              A       v0.1.0                  A        v0.1.0




                                        /tmp/project/
                                        |−−.git/
                                        |−−bar
                                        ‘−− sub/
                                            |−−fiz
                                            ‘−− foo




° git commit -a -m‘‘I’’
Created commit b618aed: I
2 files changed, 11 insertions(+), 20 deletions(-)
"origin"                      local

                                      master


    master            origin/master     I
     H                          H
G    F                 G        F
     C       v0.2.0             C        v0.2.0


     B                          B
     A       v0.1.0             A        v0.1.0




                          /tmp/project/
                          |−−.git/
                          |−− bar
                          ‘−− sub/
                              |−− fiz
                              ‘−− foo
"origin"                      local

                                          master


        master            origin/master     I
         H                          H
    G    F                 G        F
         C       v0.2.0             C        v0.2.0


         B                          B
         A       v0.1.0             A        v0.1.0




                              /tmp/project/
                              |−−.git/
                              |−− bar
                              ‘−− sub/
                                  |−− fiz
                                  ‘−− foo




° git push
"origin"                            local

             master                                 master


               I                    origin/master     I
              H                               H
        G     F                      G        F
              C       v0.2.0                  C        v0.2.0


              B                               B
              A       v0.1.0                  A        v0.1.0




                                        /tmp/project/
                                        |−−.git/
                                        |−− bar
                                        ‘−− sub/
                                            |−− fiz
                                            ‘−− foo




° git push
Counting objects: 9, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 810 bytes, done.
Total 5 (delta 4), reused 0 (delta 0)
refs/heads/master: 9ddc135 -> 15b67c0
To ssh+git://repo.or.cz/project.git
9ddc135..15b67c0 master -> master
"origin"                           local

             master                      origin/master


               I                              I          master


              H                               H
        G     F                      G        F
              C       v0.2.0                  C          v0.2.0


              B                               B
              A       v0.1.0                  A          v0.1.0




                                       /tmp/project/
                                       |−−.git/
                                       |−− bar
                                       ‘−− sub/
                                           |−− fiz
                                           ‘−− foo




° git push
Counting objects: 9, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 810 bytes, done.
Total 5 (delta 4), reused 0 (delta 0)
refs/heads/master: 9ddc135 -> 15b67c0
To ssh+git://repo.or.cz/project.git
9ddc135..15b67c0 master -> master
"origin"                    local

    master                origin/master


      I                        I          master


     H                         H
G    F                G        F
     C       v0.2.0            C          v0.2.0


     B                         B
     A       v0.1.0            A          v0.1.0




                      /tmp/project/
                      |−−.git/
                      |−− bar
                      ‘−− sub/
                          |−− fiz
                          ‘−− foo
"origin"                                  foo.com

    master


      I
     H
G    F
     C       v0.2.0


     B
     A       v0.1.0




    . . . Entretanto, noutros locais na Internet . . .
"origin"                                       foo.com

    master


      I
     H
G    F
     C       v0.2.0


     B
     A       v0.1.0




                      Fred clones o projeto.
"origin"                                       foo.com

    master                                         master


      I                                              I
     H                                              H
G    F                                         G    F
     C       v0.2.0                                 C       v0.2.0


     B                                              B
     A       v0.1.0                                 A       v0.1.0




                      Fred clones o projeto.
"origin"                                       foo.com
                                                   master


    master                                           J
      I                                              I
     H                                              H
G    F                                         G    F
     C       v0.2.0                                 C       v0.2.0


     B                                              B
     A       v0.1.0                                 A       v0.1.0




                      . . . e faz mais mudan¸as.
                                            c
"origin"                                   foo.com
                                                master


    master                                         J
      I                                            I
     H                                           H
G    F                                      G    F
     C       v0.2.0                              C       v0.2.0


     B                                           B
     A       v0.1.0                              A       v0.1.0




                  Fred n˜o pode empurrar (push).
                        a
"origin"                            foo.com
                                                master


             master                               J
               I                                  I
              H                                  H
        G     F                             G    F
              C       v0.2.0                     C       v0.2.0


              B                                  B
              A       v0.1.0                     A       v0.1.0




From: fred@foo.com Subject: I fixed a bug

Please pull from

http://foo.com/project.git/

-Fred
"origin"                                      local             foo.com
                                                      master                master


             master                                     K                     J




                                    origin/master
               I                                        I                     I
              H                                         H                    H
        G     F                           G             F               G    F
              C       v0.2.0                            C      v0.2.0        C       v0.2.0


              B                                         B                    B
              A       v0.1.0                            A      v0.1.0        A       v0.1.0




                                                    /tmp/project/
                                                    |−−.git/
                                                    |−− bar
                                                    ‘−− sub/
                                                        |−− fiz
                                                        ‘−− foo




From: fred@foo.com Subject: I fixed a bug

Please pull from

http://foo.com/project.git/

-Fred
"origin"                                local             foo.com
                                            master                master


        master                                K                     J




                          origin/master
          I                                   I                     I
         H                                    H                    H
    G    F                      G             F               G    F
         C       v0.2.0                       C      v0.2.0        C       v0.2.0


         B                                    B                    B
         A       v0.1.0                       A      v0.1.0        A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git remote add fred http://foo.com/project.git/
"origin"                                local             foo.com
                                            master                master


        master                                K                     J




                          origin/master
          I                                   I                     I
         H                                    H                    H
    G    F                      G             F               G    F
         C       v0.2.0                       C      v0.2.0        C       v0.2.0


         B                                    B                    B
         A       v0.1.0                       A      v0.1.0        A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git remote add fred http://foo.com/project.git/
"origin"                                local             "fred"
                                            master                master


        master                                K                     J




                          origin/master
          I                                   I                     I
         H                                    H                    H
    G    F                      G             F               G    F
         C       v0.2.0                       C      v0.2.0        C       v0.2.0


         B                                    B                    B
         A       v0.1.0                       A      v0.1.0        A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git remote add fred http://foo.com/project.git/
"origin"                                local             "fred"
                                            master                master


        master                                K                     J




                          origin/master
          I                                   I                     I
         H                                    H                    H
    G    F                      G             F               G    F
         C       v0.2.0                       C      v0.2.0        C       v0.2.0


         B                                    B                    B
         A       v0.1.0                       A      v0.1.0        A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git fetch fred
"origin"                                local             "fred"
                                            master                master


        master                                K                     J




                          origin/master
          I                                   I                     I
         H                                    H                    H
    G    F                      G             F               G    F
         C       v0.2.0                       C      v0.2.0        C       v0.2.0


         B                                    B                    B
         A       v0.1.0                       A      v0.1.0        A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git fetch fred
"origin"                                local                           "fred"
                                            master                              master




                                                              fred/master
        master                                K       J                           J




                          origin/master
          I                                   I                                   I
         H                                    H                                  H
    G    F                      G             F                             G    F
         C       v0.2.0                       C      v0.2.0                      C       v0.2.0


         B                                    B                                  B
         A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git fetch fred
"origin"                                local                           "fred"
                                        master                              master




                                                          fred/master
    master                                K       J                           J




                      origin/master
      I                                   I                                   I
     H                                    H                                  H
G    F                      G             F                             G    F
     C       v0.2.0                       C      v0.2.0                      C       v0.2.0


     B                                    B                                  B
     A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                      /tmp/project/
                                      |−−.git/
                                      |−− bar
                                      ‘−− sub/
                                          |−− fiz
                                          ‘−− foo
"origin"                                local                           "fred"
                                            master                              master




                                                              fred/master
        master                                K       J                           J




                          origin/master
          I                                   I                                   I
         H                                    H                                  H
    G    F                      G             F                             G    F
         C       v0.2.0                       C      v0.2.0                      C       v0.2.0


         B                                    B                                  B
         A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git log fred/master
"origin"                                local                           "fred"
                                            master                              master




                                                              fred/master
        master                                K       J                           J




                          origin/master
          I                                   I                                   I
         H                                    H                                  H
    G    F                      G             F                             G    F
         C       v0.2.0                       C      v0.2.0                      C       v0.2.0


         B                                    B                                  B
         A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git log fred/master
° git log fred/master ^aster
                      m
"origin"                                local                           "fred"
                                            master                              master




                                                              fred/master
        master                                K       J                           J




                          origin/master
          I                                   I                                   I
         H                                    H                                  H
    G    F                      G             F                             G    F
         C       v0.2.0                       C      v0.2.0                      C       v0.2.0


         B                                    B                                  B
         A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git log fred/master
° git log fred/master ^aster
                      m
° git log -p fred/master ^aster
                         m
"origin"                                local                           "fred"
                                            master                              master




                                                              fred/master
        master                                K       J                           J




                          origin/master
          I                                   I                                   I
         H                                    H                                  H
    G    F                      G             F                             G    F
         C       v0.2.0                       C      v0.2.0                      C       v0.2.0


         B                                    B                                  B
         A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git checkout -b fred-fix fred/master
"origin"                                local                            "fred"
                                           master   fred−fix                     master




                                                               fred/master
        master                                K      J                             J




                          origin/master
          I                                    I                                   I
         H                                    H                                   H
    G    F                      G             F                              G    F
         C       v0.2.0                       C     v0.2.0                        C       v0.2.0


         B                                    B                                   B
         A       v0.1.0                       A     v0.1.0                        A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−−bar
                                          ‘−− sub/
                                              |−−fiz
                                              ‘−−foo




° git checkout -b fred-fix fred/master
"origin"                                local                            "fred"
                                           master   fred−fix                     master




                                                               fred/master
        master                                K      J                             J




                          origin/master
          I                                    I                                   I
         H                                    H                                   H
    G    F                      G             F                              G    F
         C       v0.2.0                       C     v0.2.0                        C       v0.2.0


         B                                    B                                   B
         A       v0.1.0                       A     v0.1.0                        A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−−bar
                                          ‘−− sub/
                                              |−−fiz
                                              ‘−−foo




° git checkout master
"origin"                                local                             "fred"
                                            master


                                              L      fred−fix                     master




                                                                fred/master
        master                                K       J                             J




                          origin/master
          I                                   I                                     I
         H                                    H                                    H
    G    F                      G             F                               G    F
         C       v0.2.0                       C      v0.2.0                        C       v0.2.0


         B                                    B                                    B
         A       v0.1.0                       A      v0.1.0                        A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−−bar
                                          ‘−− sub/
                                              |−−fiz
                                              ‘−−foo




° git checkout master
° git merge fred-fix
"origin"                                local                           "fred"
                                            master


                                              L                                 master




                                                              fred/master
        master                                K       J                           J




                          origin/master
          I                                   I                                   I
         H                                    H                                  H
    G    F                      G             F                             G    F
         C       v0.2.0                       C      v0.2.0                      C       v0.2.0


         B                                    B                                  B
         A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                          /tmp/project/
                                          |−−.git/
                                          |−− bar
                                          ‘−− sub/
                                              |−− fiz
                                              ‘−− foo




° git checkout master
° git merge fred-fix
° git branch -d fred-fix
"origin"                                local                           "fred"
                                        master


                                          L                                 master




                                                          fred/master
    master                                K       J                           J




                      origin/master
      I                                   I                                   I
     H                                    H                                  H
G    F                      G             F                             G    F
     C       v0.2.0                       C      v0.2.0                      C       v0.2.0


     B                                    B                                  B
     A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                      /tmp/project/
                                      |−−.git/
                                      |−− bar
                                      ‘−− sub/
                                          |−− fiz
                                          ‘−− foo




                                      ° git push
"origin"                                local                           "fred"
    master                              master


      L                                   L                                 master




                                                          fred/master
     K        J                           K       J                           J




                      origin/master
      I                                   I                                   I
     H                                    H                                  H
G    F                      G             F                             G    F
     C       v0.2.0                       C      v0.2.0                      C       v0.2.0


     B                                    B                                  B
     A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                      /tmp/project/
                                      |−−.git/
                                      |−− bar
                                      ‘−− sub/
                                          |−− fiz
                                          ‘−− foo




                                      ° git push
"origin"                                local                           "fred"
    master                              master




                      origin/master
      L                                   L                                 master




                                                          fred/master
     K        J                           K       J                           J
      I                                   I                                   I
     H                                    H                                  H
G    F                       G            F                             G    F
     C       v0.2.0                       C      v0.2.0                      C       v0.2.0


     B                                    B                                  B
     A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                      /tmp/project/
                                      |−−.git/
                                      |−− bar
                                      ‘−− sub/
                                          |−− fiz
                                          ‘−− foo



                                      ° git push
"origin"                                local                           "fred"
    master                              master




                      origin/master
      L                                   L                                 master




                                                          fred/master
     K        J                           K       J                           J
      I                                   I                                   I
     H                                    H                                  H
G    F                       G            F                             G    F
     C       v0.2.0                       C      v0.2.0                      C       v0.2.0


     B                                    B                                  B
     A       v0.1.0                       A      v0.1.0                      A       v0.1.0




                                      /tmp/project/
                                      |−−.git/
                                      |−− bar
                                      ‘−− sub/
                                          |−− fiz
                                          ‘−− foo
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Ambientes Gr´ficos
            a



       gitk
       Agrad´vel visualiza¸˜o da ´rvore de revis˜es
            a              ca    a              o
       git gui
       Executar tarefas s˜o banais em um ambiente de janelas
                         a
       Ex: add/rm arquivos, fazer commits, branch, etc. . .




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       75 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Ambientes Gr´ficos
            a



       gitk
       Agrad´vel visualiza¸˜o da ´rvore de revis˜es
            a              ca    a              o
       git gui
       Executar tarefas s˜o banais em um ambiente de janelas
                         a
       Ex: add/rm arquivos, fazer commits, branch, etc. . .




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       75 / 84
Intro To Git
Intro To Git
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Objetos perdidos




                        Lembram dos objetos perdidos ?




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       77 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Objetos perdidos
  .git/objects
  |-- 23
  |   ‘-- d4bd826aba9e29aaace9411cc175b784edc399
  |-- 76
  |   ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3
  |-- c4
  |   ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc
  |-- e7
  |   ‘-- 4be61128eef713459ca4e32398d689fe80864e
  |-- info
  |   ‘-- packs
  ‘-- pack
      |-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx
      ‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack




    Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                        a       78 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Objetos perdidos


  ° git gc
  Counting objects: 636, done.
  Compressing objects: 100% (635/635), done.
  Writing objects: 100% (636/636), done.
  Total 636 (delta 486), reused 0 (delta 0)
  Removing duplicate objects: 100% (256/256), done.




        GC executa automaticamente quando vocˆ obtem 6700
                                             e
        objetos
        (configur´vel)
                a



    Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                        a       79 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


Objetos perdidos


  ° git gc
  Counting objects: 636, done.
  Compressing objects: 100% (635/635), done.
  Writing objects: 100% (636/636), done.
  Total 636 (delta 486), reused 0 (delta 0)
  Removing duplicate objects: 100% (256/256), done.




        GC executa automaticamente quando vocˆ obtem 6700
                                             e
        objetos
        (configur´vel)
                a



    Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                        a       79 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Outras Leituras

      Site oficial
      http://git.or.cz
      Git wiki
      git.or.cz/gitwiki
      Podcast (Scott Chacon)
      GitCasts.com
      Bart Jukie
      http://www.jukie.net/∼bart/blog/
      Apresenta¸˜o Original
               ca
      git://tachyon.jukie.net/intro-to-git.git/

   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       80 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Mais links


      git-scm
      http://www.git-scm.com
      V´
       ıdeo Linus sobre o git
      http://www.youtube.com/watch?v=4XpnKHJAok8
      Meu blog
      http://faraohh.blogspot.com
      Cercomp/UFG
      http://www.cercomp.ufg.br



   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       81 / 84
Conceitos    Comandos
                                       Reposit´rio
                                              o      Branching
                                      Usando GIT     Remotes


The truth credit
http://www.jukie.net/~bart/blog/

                                                       Bart Trojanowski
                                     Hi Marcello,
                                     * Marcello Henrique <faraohh@gmail.com> [081023
                                     15:12]: > I seen that you use beamer, you
                                     could share their sources in latex/beamer? ( >
                                     http://excess.org/article/2008/07/ogre-git-tutorial/)

                                     Here you go...
                                     git://tachyon.jukie.net/intro-to-git.git/

                                     > Would like to create a presentation for
                                     beginners.

                                     I grant you rights to the material if used with
                                     attribution.
                                     Cheers,
                                     -Bart



    Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                        a       82 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Perguntas?




 Perguntas?




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       83 / 84
Conceitos    Comandos
                                      Reposit´rio
                                             o      Branching
                                     Usando GIT     Remotes


Perguntas?




 Obrigado!




   Marcello Henrique, faraohh@gmail.com                         Git o b´sico
                                                                       a       84 / 84

More Related Content

PDF
Git Learn Version Control With Git A Stepbystep Ultimate Beginners Guide Hutten
PDF
Wokshop de Git
PPTX
Presentation on Repository Control System
PPT
Version Control ThinkVitamin
PPTX
Git and github
Git Learn Version Control With Git A Stepbystep Ultimate Beginners Guide Hutten
Wokshop de Git
Presentation on Repository Control System
Version Control ThinkVitamin
Git and github

Similar to Intro To Git (20)

PPTX
Git and Github
PDF
Starting with Git & GitHub
PDF
Pragmatic version control using Git 1st Edition Travis Swicegood
PPT
Git and fundamentals
PDF
Version Control History and Git Basics
PPTX
Git and GitFlow branching model
PPTX
Git basic stanley hsiao 2010_12_15
PDF
Managing e commerce systems codebase with git
PPTX
Git.pptx
PPTX
GIT INTRODUCTION
PPTX
Introduction to Git and Github
PPT
Fundamentals and basics of Git and commands
KEY
Let's Git this Party Started: An Introduction to Git and GitHub
PDF
Semana 1 Git y Github
PDF
Understanding Distributed Source Control
PPTX
Git session 1
PDF
Git Going With DVCS v1.5.2
PPTX
Materi Git gabungan dari dua sumber yang berbeda
PDF
Git basics
PPT
Git presentation
Git and Github
Starting with Git & GitHub
Pragmatic version control using Git 1st Edition Travis Swicegood
Git and fundamentals
Version Control History and Git Basics
Git and GitFlow branching model
Git basic stanley hsiao 2010_12_15
Managing e commerce systems codebase with git
Git.pptx
GIT INTRODUCTION
Introduction to Git and Github
Fundamentals and basics of Git and commands
Let's Git this Party Started: An Introduction to Git and GitHub
Semana 1 Git y Github
Understanding Distributed Source Control
Git session 1
Git Going With DVCS v1.5.2
Materi Git gabungan dari dua sumber yang berbeda
Git basics
Git presentation
Ad

Recently uploaded (20)

PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
Hybrid model detection and classification of lung cancer
PPT
Geologic Time for studying geology for geologist
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PPTX
Tartificialntelligence_presentation.pptx
PDF
STKI Israel Market Study 2025 version august
PDF
Getting started with AI Agents and Multi-Agent Systems
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Unlock new opportunities with location data.pdf
PPT
What is a Computer? Input Devices /output devices
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Hybrid model detection and classification of lung cancer
Geologic Time for studying geology for geologist
O2C Customer Invoices to Receipt V15A.pptx
Tartificialntelligence_presentation.pptx
STKI Israel Market Study 2025 version august
Getting started with AI Agents and Multi-Agent Systems
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Unlock new opportunities with location data.pdf
What is a Computer? Input Devices /output devices
Univ-Connecticut-ChatGPT-Presentaion.pdf
A contest of sentiment analysis: k-nearest neighbor versus neural network
A novel scalable deep ensemble learning framework for big data classification...
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
A comparative study of natural language inference in Swahili using monolingua...
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
Developing a website for English-speaking practice to English as a foreign la...
Enhancing emotion recognition model for a student engagement use case through...
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Ad

Intro To Git

  • 1. Conceitos Reposit´rio o Usando GIT Git o b´sico a Marcello Henrique, faraohh@gmail.com Brasil/Goi´s - UFG a 23 de Outubro de 2008 Marcello Henrique, faraohh@gmail.com Git o b´sico a 1 / 84
  • 2. Conceitos Reposit´rio o Usando GIT 1 Conceitos Source Control Manager Decentraliza¸˜o ca Hist´ria o 2 Reposit´rio o Estrutura Objetos 3 Usando GIT Comandos Branching Remotes Marcello Henrique, faraohh@gmail.com Git o b´sico a 2 / 84
  • 3. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Conceitos Gerenciamento de C´digo Fonte o Controle nas mudan¸as dos arquivos c Reposit´rio / base de dados das mudan¸as o c Diret´rio de trabalho / estado atual o Modelo Centralizado Servidor: simples base de dados Cliente: diret´rio de trabalho & estado o Modelo Descentralizado Qualquer um pode ser o servidor Reposit´rio acoplado ao diret´rio de trabalho o o Hist´rico completo o Trabalho desconectado Marcello Henrique, faraohh@gmail.com Git o b´sico a 3 / 84
  • 4. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Conceitos Gerenciamento de C´digo Fonte o Controle nas mudan¸as dos arquivos c Reposit´rio / base de dados das mudan¸as o c Diret´rio de trabalho / estado atual o Modelo Centralizado Servidor: simples base de dados Cliente: diret´rio de trabalho & estado o Modelo Descentralizado Qualquer um pode ser o servidor Reposit´rio acoplado ao diret´rio de trabalho o o Hist´rico completo o Trabalho desconectado Marcello Henrique, faraohh@gmail.com Git o b´sico a 3 / 84
  • 5. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Conceitos Gerenciamento de C´digo Fonte o Controle nas mudan¸as dos arquivos c Reposit´rio / base de dados das mudan¸as o c Diret´rio de trabalho / estado atual o Modelo Centralizado Servidor: simples base de dados Cliente: diret´rio de trabalho & estado o Modelo Descentralizado Qualquer um pode ser o servidor Reposit´rio acoplado ao diret´rio de trabalho o o Hist´rico completo o Trabalho desconectado Marcello Henrique, faraohh@gmail.com Git o b´sico a 3 / 84
  • 6. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes ´ Arvore de trabalho diret´rios o arquivos Marcello Henrique, faraohh@gmail.com Git o b´sico a 4 / 84
  • 7. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes Reposit´rio de conte´do o u arquivos a.c v1 Marcello Henrique, faraohh@gmail.com Git o b´sico a 5 / 84
  • 8. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes Reposit´rio de conte´do o u arquivos commits meta data a.c b.c v1 v9 Marcello Henrique, faraohh@gmail.com Git o b´sico a 5 / 84
  • 9. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes Reposit´rio de conte´do o u arquivos commits E ancentrais D time B C A Marcello Henrique, faraohh@gmail.com Git o b´sico a 5 / 84
  • 10. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes Directed Acyclic Graph “DAG” H G E F D B C A Marcello Henrique, faraohh@gmail.com Git o b´sico a 6 / 84
  • 11. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes Referencias tags Marcello Henrique, faraohh@gmail.com Git o b´sico a 7 / 84
  • 12. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes Referencias tags topicA branches testing release H G E F D v1.5.0 B C A v1.4.4 Marcello Henrique, faraohh@gmail.com Git o b´sico a 7 / 84
  • 13. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes HEAD HEAD atual checkout topicA pontos para branch testing release H G E F D v1.5.0 B C A v1.4.4 Marcello Henrique, faraohh@gmail.com Git o b´sico a 7 / 84
  • 14. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes HEAD HEAD atual checkout topicA pontos para branch testing release muitas vezes solto H G E F D v1.5.0 B C A v1.4.4 Marcello Henrique, faraohh@gmail.com Git o b´sico a 7 / 84
  • 15. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM componentes ´ Indice HEAD “staging area” topicA O que est´ para ser a index testing release comitado H G E F D v1.5.0 B C A v1.4.4 Marcello Henrique, faraohh@gmail.com Git o b´sico a 7 / 84
  • 16. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM opera¸˜es I co Inicializa¸˜o ca init checkout branch Modifica¸˜o ca add, delete, rename commit Informa¸˜oca status diff log Marcello Henrique, faraohh@gmail.com Git o b´sico a 8 / 84
  • 17. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM opera¸˜es II co Referˆncias e tag branch Marcello Henrique, faraohh@gmail.com Git o b´sico a 9 / 84
  • 18. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM Centralizado checkout update topicA diff testing log release commit H G E F D v1.5.0 B C A v1.4.4 opera¸˜es requerem servidor co ponto de falha, funilamento Marcello Henrique, faraohh@gmail.com Git o b´sico a 10 / 84
  • 19. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o SCM Decentralizado topicA testing release clone topicA testing release H H G E F pull G F E D v1.5.0 D v1.5.0 B A C v1.4.4 push B A C v1.4.4 clon e pull push clon pull h e pus topicA testing release H G E F D v1.5.0 B C A v1.4.4 qualquer um pode ser o servidor Marcello Henrique, faraohh@gmail.com Git o b´sico a 11 / 84
  • 20. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Opera¸oes SCM c˜ Decentralizado clone pull, fetch push Marcello Henrique, faraohh@gmail.com Git o b´sico a 12 / 84
  • 21. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Decentraliza¸˜o ca Reposit´rio p´blico o u Marcello Henrique, faraohh@gmail.com Git o b´sico a 13 / 84
  • 22. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Decentraliza¸˜o ca upstream local Fazendo um clone local Marcello Henrique, faraohh@gmail.com Git o b´sico a 13 / 84
  • 23. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Decentraliza¸˜o ca upstream pristine topic A topic B Clonar na rede local ´ mais leve e Marcello Henrique, faraohh@gmail.com Git o b´sico a 13 / 84
  • 24. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Decentraliza¸˜o ca upstream pristine topic A topic B Empurando mudan¸as entre reposit´rios c o Marcello Henrique, faraohh@gmail.com Git o b´sico a 13 / 84
  • 25. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Decentraliza¸˜o ca upstream web server pristine topic A topic B Enviando mudan¸as para servidores p´blicos c u Marcello Henrique, faraohh@gmail.com Git o b´sico a 13 / 84
  • 26. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Decentraliza¸˜o ca upstream web server pristine another topic A topic B Compartilhando mudan¸as com redes confi´veis c a Marcello Henrique, faraohh@gmail.com Git o b´sico a 13 / 84
  • 27. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Decentraliza¸˜o pode ser bom? ca Micro commits n˜o intrusivos a Opera¸˜o de destacar ca N˜o h´ pontos simples de falhas a a Backups s˜o banais a Marcello Henrique, faraohh@gmail.com Git o b´sico a 14 / 84
  • 28. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Hist´ria do GIT o 2002 Linus usa BitKeeper para versionar o Linux BK ´ o melhor e Desenvolvimento do Linux escala melhor April 6, 2005 Vence a licen¸a do BitMover c Linus cria seu pr´prio SCM, “o GIT” o April 18, 2005 GIT pode fundir c´digos, “merge” o June 16, 2005 GIT ´ oficialmente usado para versionar o c´digo do e o Linux Feb 14, 2007 GIT 1.5.0 ´ lan¸ado, focando usabilidade e c Marcello Henrique, faraohh@gmail.com Git o b´sico a 15 / 84
  • 29. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Hist´ria do GIT o 2002 Linus usa BitKeeper para versionar o Linux BK ´ o melhor e Desenvolvimento do Linux escala melhor April 6, 2005 Vence a licen¸a do BitMover c Linus cria seu pr´prio SCM, “o GIT” o April 18, 2005 GIT pode fundir c´digos, “merge” o June 16, 2005 GIT ´ oficialmente usado para versionar o c´digo do e o Linux Feb 14, 2007 GIT 1.5.0 ´ lan¸ado, focando usabilidade e c Marcello Henrique, faraohh@gmail.com Git o b´sico a 15 / 84
  • 30. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Hist´ria do GIT o 2002 Linus usa BitKeeper para versionar o Linux BK ´ o melhor e Desenvolvimento do Linux escala melhor April 6, 2005 Vence a licen¸a do BitMover c Linus cria seu pr´prio SCM, “o GIT” o April 18, 2005 GIT pode fundir c´digos, “merge” o June 16, 2005 GIT ´ oficialmente usado para versionar o c´digo do e o Linux Feb 14, 2007 GIT 1.5.0 ´ lan¸ado, focando usabilidade e c Marcello Henrique, faraohh@gmail.com Git o b´sico a 15 / 84
  • 31. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Hist´ria do GIT o 2002 Linus usa BitKeeper para versionar o Linux BK ´ o melhor e Desenvolvimento do Linux escala melhor April 6, 2005 Vence a licen¸a do BitMover c Linus cria seu pr´prio SCM, “o GIT” o April 18, 2005 GIT pode fundir c´digos, “merge” o June 16, 2005 GIT ´ oficialmente usado para versionar o c´digo do e o Linux Feb 14, 2007 GIT 1.5.0 ´ lan¸ado, focando usabilidade e c Marcello Henrique, faraohh@gmail.com Git o b´sico a 15 / 84
  • 32. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o Hist´ria do GIT o 2002 Linus usa BitKeeper para versionar o Linux BK ´ o melhor e Desenvolvimento do Linux escala melhor April 6, 2005 Vence a licen¸a do BitMover c Linus cria seu pr´prio SCM, “o GIT” o April 18, 2005 GIT pode fundir c´digos, “merge” o June 16, 2005 GIT ´ oficialmente usado para versionar o c´digo do e o Linux Feb 14, 2007 GIT 1.5.0 ´ lan¸ado, focando usabilidade e c Marcello Henrique, faraohh@gmail.com Git o b´sico a 15 / 84
  • 33. Conceitos Source Control Manager Reposit´rio o Decentraliza¸˜o ca Usando GIT Hist´ria o GIT gets better And then realize that nothing is perfect. Git is just *closer* to perfect than any other SCM out there. −− Linus Marcello Henrique, faraohh@gmail.com Git o b´sico a 16 / 84
  • 34. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Estrutura repository HEAD topicA testing release H G E F D v1.5.0 B C A v1.4.4 O hist´rico o Marcello Henrique, faraohh@gmail.com Git o b´sico a 17 / 84
  • 35. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Estrutura repository index HEAD 100644 20b024 0 bar 100644 1d52a6 0 baz topicA 100644 20b024 0 sub/fiz testing 100644 43dbe0 0 sub/foo release H G E F D v1.5.0 B C A v1.4.4 ´ ındices Marcello Henrique, faraohh@gmail.com Git o b´sico a 17 / 84
  • 36. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Estrutura repository index work tree HEAD . 100644 20b024 0 bar |−− bar 100644 1d52a6 0 baz topicA 100644 20b024 0 sub/fiz |−− baz testing 100644 43dbe0 0 sub/foo ‘−− sub release |−− fiz H ‘−− foo G E F D v1.5.0 B C A v1.4.4 arquivos edit´veis a Marcello Henrique, faraohh@gmail.com Git o b´sico a 17 / 84
  • 37. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Estrutura repository index work tree HEAD . 100644 20b024 0 bar |−− bar 100644 1d52a6 0 baz topicA 100644 20b024 0 sub/fiz |−− baz testing 100644 43dbe0 0 sub/foo ‘−− sub release |−− fiz H ‘−− foo G E F D v1.5.0 B C A v1.4.4 “staging”: add, remove, rename Marcello Henrique, faraohh@gmail.com Git o b´sico a 17 / 84
  • 38. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Estrutura repository index work tree HEAD . 100644 20b024 0 bar |−− bar 100644 1d52a6 0 baz topicA 100644 20b024 0 sub/fiz |−− baz testing 100644 43dbe0 0 sub/foo ‘−− sub release |−− fiz H ‘−− foo G E F D v1.5.0 B C A v1.4.4 “committing”: commit Marcello Henrique, faraohh@gmail.com Git o b´sico a 17 / 84
  • 39. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Estrutura repository index work tree HEAD . 100644 20b024 0 bar |−− bar 100644 1d52a6 0 baz topicA 100644 20b024 0 sub/fiz |−− baz testing 100644 43dbe0 0 sub/foo ‘−− sub release |−− fiz H ‘−− foo G E F D v1.5.0 B C A v1.4.4 “reading tree”: checkout, read-tree, reset Marcello Henrique, faraohh@gmail.com Git o b´sico a 17 / 84
  • 40. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Estrutura repository index work tree HEAD . 100644 20b024 0 bar |−− bar 100644 1d52a6 0 baz topicA 100644 20b024 0 sub/fiz |−− baz testing 100644 43dbe0 0 sub/foo ‘−− sub release |−− fiz H ‘−− foo G E F D v1.5.0 B C A v1.4.4 “checking out”: checkout, checkout-index, reset Marcello Henrique, faraohh@gmail.com Git o b´sico a 17 / 84
  • 41. Conceitos Estrutura Reposit´rio o Objetos Usando GIT O reposit´rio o .git |-- HEAD referˆncia atual do checkout e |-- config arquivo de configura¸˜o do reposit´rio ca o |-- description arquivo de descri¸˜o do reposit´rio ca o |-- hooks | ‘-- ... scripts de ganchos |-- index mudan¸as para commit c |-- info | |-- exclude configura¸˜o de arquivos para n˜o versionamento ca a | ‘-- refs refs? |-- logs | ‘-- ... “reflog” dados |-- objects | |-- XX | | ‘-- ... objetos perdidos | |-- info | | ‘-- packs informa¸oes sobre pacotes c˜ | ‘-- pack | ‘-- ... pacotes e ´ındeces ‘-- refs |-- heads | ‘-- master ramo master Marcello‘-- tags Henrique, faraohh@gmail.com Git o b´sico a 18 / 84
  • 42. Conceitos Estrutura Reposit´rio o Objetos Usando GIT O reposit´rio o .git/config Configura¸˜o do reposit´rio ca o .git/description Descri¸˜o do reposit´rio ca o Muito usado pelo gitweb .git/info/exclude Padr˜es para ignorar arquivos o Marcello Henrique, faraohh@gmail.com Git o b´sico a 19 / 84
  • 43. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos .git/objects |-- 23 | ‘-- d4bd826aba9e29aaace9411cc175b784edc399 |-- 76 | ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3 |-- c4 | ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc |-- e7 | ‘-- 4be61128eef713459ca4e32398d689fe80864e |-- info | ‘-- packs ‘-- pack |-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx ‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack Marcello Henrique, faraohh@gmail.com Git o b´sico a 20 / 84
  • 44. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos .git/objects |-- 23 | ‘-- d4bd826aba9e29aaace9411cc175b784edc399 |-- 76 | ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3 |-- c4 | ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc |-- e7 | ‘-- 4be61128eef713459ca4e32398d689fe80864e |-- info | ‘-- packs ‘-- pack |-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx ‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack “Objetos perdidos” Marcello Henrique, faraohh@gmail.com Git o b´sico a 21 / 84
  • 45. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos .git/objects |-- 23 | ‘-- d4bd826aba9e29aaace9411cc175b784edc399 |-- 76 | ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3 |-- c4 | ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc |-- e7 | ‘-- 4be61128eef713459ca4e32398d689fe80864e |-- info | ‘-- packs ‘-- pack |-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx ‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack “pack arquivo” Marcello Henrique, faraohh@gmail.com Git o b´sico a 22 / 84
  • 46. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos Conte´do endere¸´vel u ca type size data Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 47. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos Conte´do endere¸´vel u ca type size data SHA1 52a0ff44aba8599f43a5d821c421af316cb7305 Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 48. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos Conte´do endere¸´vel u ca type size data 52a0ff44aba8599f43a5d821c421af316cb7305 Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 49. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos Conte´do endere¸´vel u ca Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 50. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos 4 Tipos Blobs "blob" size file data Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 51. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos 4 Tipos Blobs Trees "tree" size 040000 tree 205f6b... somedir 100644 blob 9daeaf... somefile "tree" size 040000 blob 257cc5... other Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 52. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos 4 Tipos Blobs Trees "tree" size 040000 tree 205f6b... somedir 100644 blob 9daeaf... somefile "tree" size "blob" size 040000 blob 257cc5... other file data Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 53. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos 4 Tipos Blobs Trees "tree" size 040000 tree 205f6b... somedir 100644 blob 9daeaf... somefile "tree" size "blob" size 040000 blob 257cc5... other file data "blob" size file data Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 54. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos 4 Tipos Blobs Trees "commit" size Commits tree cad6ae... parent 6f0104... author Someone <address> comitter Another <address> commit message "tree" size 040000 tree 205f6b... somedir 100644 blob 9daeaf... somefile "tree" size "blob" size 040000 blob 257cc5... other file data "blob" size Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 55. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos 4 Tipos "commit" size tree cad6ae... Blobs parent 6f0104... author Someone <address> comitter Another <address> commit message Trees "tree" size 040000 tree 205f6b... somedir 100644 blob 9daeaf... somefile "tree" size 040000 blob 257cc5... other "blob" file data size "commit" size Commits "blob" size file data tree cad6ae... parent 6f0104... author Someone <address> comitter Another <address> commit message "tree" size 040000 tree 205f6b... somedir 100644 blob 9daeaf... somefile "tree" size "blob" size 040000 blob 257cc5... other file data "blob" size file data Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 56. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos 4 Tipos Blobs Trees Commits Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 57. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos 4 Tipos "commit" size "commit" size tree cad6ae... tree cad6ae... Blobs parent 6f0104... parent 6f0104... author Someone <address> author Someone <address> comitter Another <address> comitter Another <address> commit message commit message Trees "tree" size "tree" size 040000 tree 205f6b... somedir 040000 tree 205f6b... somedir 100644 blob 9daeaf... somefile 100644 blob 9daeaf... somefile "tree" size 040000 blob 257cc5... other "blob" file data size "tag" size "tree" size 040000 blob 257cc5... other "blob" file data size Commits "blob" size "blob" size file data file data object cad6ae... type commit tag tag−name Tags tagger Who <address> + date tag message Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 58. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos Imut´vel a type size data Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 59. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos Imut´vel a type size data type size data’ Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 60. Conceitos Estrutura Reposit´rio o Objetos Usando GIT Objetos Imut´vel a type size data type size data’ SHA1 8a9fd66b8bb939638564ebfdecc23b5d58070fc8 Marcello Henrique, faraohh@gmail.com Git o b´sico a 23 / 84
  • 61. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Comandos Sintaxe ° git <options> <command> <options> Marcello Henrique, faraohh@gmail.com Git o b´sico a 24 / 84
  • 62. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes add fast-export merge-one-file revert am fast-import merge-resolve rm annotate fetch merge-subtree send-email apply fetch-pack merge-tree send-pack archimport filter-branch mergetool sh-setup archive fmt-merge-msg mktag shell bisect for-each-ref mktree shortlog blame format-patch mv show branch fsck name-rev show-branch bundle fsck-objects pack-objects show-index cat-file gc pack-redundant show-ref check-attr get-tar-commit-id pack-refs stash check-ref-format grep parse-remote status checkout gui patch-id stripspace checkout-index hash-object peek-remote submodule cherry http-fetch prune svn cherry-pick http-push prune-packed symbolic-ref citool imap-send pull tag clean index-pack push tar-tree clone init quiltimport unpack-file commit init-db read-tree unpack-objects commit-tree instaweb rebase update-index config log receive-pack update-ref count-objects lost-found reflog update-server-info cvsexportcommit ls-files relink upload-archive cvsimport ls-remote remote upload-pack cvsserver ls-tree repack var daemon mailinfo repo-config verify-pack describe mailsplit request-pull verify-tag diff merge rerere whatchanged diff-files merge-base reset write-tree diff-index merge-file rev-list diff-tree merge-index rev-parse gitk Marcello Henrique, faraohh@gmail.com Git o b´sico a 25 / 84
  • 63. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes add fast-export merge-one-file revert am fast-import merge-resolve rm annotate fetch merge-subtree send-email apply fetch-pack merge-tree send-pack archimport filter-branch mergetool sh-setup archive fmt-merge-msg mktag shell bisect for-each-ref mktree shortlog blame format-patch mv show branch fsck name-rev show-branch bundle fsck-objects pack-objects show-index cat-file gc pack-redundant show-ref check-attr get-tar-commit-id pack-refs stash check-ref-format grep parse-remote status checkout gui patch-id stripspace checkout-index hash-object peek-remote submodule cherry http-fetch prune svn cherry-pick http-push prune-packed symbolic-ref citool imap-send pull tag clean index-pack push tar-tree clone init quiltimport unpack-file commit init-db read-tree unpack-objects commit-tree instaweb rebase update-index config log receive-pack update-ref count-objects lost-found reflog update-server-info cvsexportcommit ls-files relink upload-archive cvsimport ls-remote remote upload-pack cvsserver ls-tree repack var daemon mailinfo repo-config verify-pack describe mailsplit request-pull verify-tag diff merge rerere whatchanged diff-files merge-base reset write-tree diff-index merge-file rev-list diff-tree merge-index rev-parse gitk Marcello Henrique, faraohh@gmail.com Git o b´sico a 26 / 84
  • 64. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes add fast-export merge-one-file revert am fast-import merge-resolve rm annotate fetch merge-subtree send-email apply fetch-pack merge-tree send-pack archimport filter-branch mergetool sh-setup archive fmt-merge-msg mktag shell bisect for-each-ref mktree shortlog blame format-patch mv show branch fsck name-rev show-branch bundle fsck-objects pack-objects show-index cat-file gc pack-redundant show-ref check-attr get-tar-commit-id pack-refs stash check-ref-format grep parse-remote status checkout gui patch-id stripspace checkout-index hash-object peek-remote submodule cherry http-fetch prune svn cherry-pick http-push prune-packed symbolic-ref citool imap-send pull tag clean index-pack push tar-tree clone init quiltimport unpack-file commit init-db read-tree unpack-objects commit-tree instaweb rebase update-index config log receive-pack update-ref count-objects lost-found reflog update-server-info cvsexportcommit ls-files relink upload-archive cvsimport ls-remote remote upload-pack cvsserver ls-tree repack var daemon mailinfo repo-config verify-pack describe mailsplit request-pull verify-tag diff merge rerere whatchanged diff-files merge-base reset write-tree diff-index merge-file rev-list diff-tree merge-index rev-parse gitk Marcello Henrique, faraohh@gmail.com Git o b´sico a 27 / 84
  • 65. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes add fast-export merge-one-file revert am fast-import merge-resolve rm annotate fetch merge-subtree send-email apply fetch-pack merge-tree send-pack archimport filter-branch mergetool sh-setup archive fmt-merge-msg mktag shell bisect for-each-ref mktree shortlog blame format-patch mv show branch fsck name-rev show-branch bundle fsck-objects pack-objects show-index cat-file gc pack-redundant show-ref check-attr get-tar-commit-id pack-refs stash check-ref-format grep parse-remote status checkout gui patch-id stripspace checkout-index hash-object peek-remote submodule cherry http-fetch prune svn cherry-pick http-push prune-packed symbolic-ref citool imap-send pull tag clean index-pack push tar-tree clone init quiltimport unpack-file commit init-db read-tree unpack-objects commit-tree instaweb rebase update-index config log receive-pack update-ref count-objects lost-found reflog update-server-info cvsexportcommit ls-files relink upload-archive cvsimport ls-remote remote upload-pack cvsserver ls-tree repack var daemon mailinfo repo-config verify-pack describe mailsplit request-pull verify-tag diff merge rerere whatchanged diff-files merge-base reset write-tree diff-index merge-file rev-list diff-tree merge-index rev-parse gitk Marcello Henrique, faraohh@gmail.com Git o b´sico a 28 / 84
  • 66. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes add fast-export merge-one-file revert am fast-import merge-resolve rm annotate fetch merge-subtree send-email apply fetch-pack merge-tree send-pack archimport filter-branch mergetool sh-setup archive fmt-merge-msg mktag shell bisect for-each-ref mktree shortlog blame format-patch mv show branch fsck name-rev show-branch bundle fsck-objects pack-objects show-index cat-file gc pack-redundant show-ref check-attr get-tar-commit-id pack-refs stash check-ref-format grep parse-remote status checkout gui patch-id stripspace checkout-index hash-object peek-remote submodule cherry http-fetch prune svn cherry-pick http-push prune-packed symbolic-ref citool imap-send pull tag clean index-pack push tar-tree clone init quiltimport unpack-file commit init-db read-tree unpack-objects commit-tree instaweb rebase update-index config log receive-pack update-ref count-objects lost-found reflog update-server-info cvsexportcommit ls-files relink upload-archive cvsimport ls-remote remote upload-pack cvsserver ls-tree repack var daemon mailinfo repo-config verify-pack describe mailsplit request-pull verify-tag diff merge rerere whatchanged diff-files merge-base reset write-tree diff-index merge-file rev-list diff-tree merge-index rev-parse gitk Marcello Henrique, faraohh@gmail.com Git o b´sico a 29 / 84
  • 67. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Comandos de ajuda git help Lista dos comandos mais comuns git <command> -h breve ajuda man git-<command> git help <command> git <command> --help p´ginas de manual a Marcello Henrique, faraohh@gmail.com Git o b´sico a 30 / 84
  • 68. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Configura¸˜o do usu´rio ca a °HOME/.gitconfig ° git config --global user.name "Seu nome" ° git config --global user.email usuario@dominio.com ° git config --global color.pager true ° git config --global color.ui auto Marcello Henrique, faraohh@gmail.com Git o b´sico a 31 / 84
  • 69. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Configura¸˜o do usu´rio ca a °HOME/.gitconfig ° git config --global user.name "Seu nome" ° git config --global user.email usuario@dominio.com ° git config --global color.pager true ° git config --global color.ui auto Marcello Henrique, faraohh@gmail.com Git o b´sico a 31 / 84
  • 70. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Configura¸˜o do usu´rio ca a ° cat .gitconfig [user] name = "Marcello Henrique" email = "faraohh@gmail.com" [core] pager = less -FRSX editor = vim [color] ui = auto [merge] tool = vimdiff Marcello Henrique, faraohh@gmail.com Git o b´sico a 32 / 84
  • 71. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Comando de inicializa¸˜o ca ° git init cria a ´rea do projeto a cria o diret´rio .git o Marcello Henrique, faraohh@gmail.com Git o b´sico a 33 / 84
  • 72. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes O que commitar? adicionar ° git add file ° git add . remover ° git rm file renomear ° git mv old new Marcello Henrique, faraohh@gmail.com Git o b´sico a 34 / 84
  • 73. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Ignorar arquivos ° cat .gitignore *.o *~ Marcello Henrique, faraohh@gmail.com Git o b´sico a 35 / 84
  • 74. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Como commitar? ° git commit -a -m‘‘some comment’’ Vai criar um commit de tudo ou somente dos itens trabalhados (staged) Marcello Henrique, faraohh@gmail.com Git o b´sico a 36 / 84
  • 75. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° mkdir project HEAD ° cd project ° git init master index repository working tree .git Marcello Henrique, faraohh@gmail.com Git o b´sico a 37 / 84
  • 76. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° echo test > test HEAD master index repository working tree .git test Marcello Henrique, faraohh@gmail.com Git o b´sico a 37 / 84
  • 77. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° echo test > test HEAD ° git add test master index tree 52a266... blob 9daefb... "test" repository working tree .git test Marcello Henrique, faraohh@gmail.com Git o b´sico a 37 / 84
  • 78. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° echo test > test HEAD ° git add test master index ° git commit -m‘‘test’’ Created initial commit 6f01040: test commit 1 files changed, 1 insertions(+), 0 deletions(-) 6f0104... create mode 100644 test tree 52a266... blob 9daefb... "test" repository working tree .git test Marcello Henrique, faraohh@gmail.com Git o b´sico a 37 / 84
  • 79. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° echo test > test HEAD ° git add test master index ° git commit -m‘‘test’’ commit 6f0104... ° mkdir dir tree tree ° echo foo > dir/foo 52a266... cad6ae... ° git add dir/foo blob tree "dir" 9daefb... 205f6b... "test" blob 257cc5... "foo" repository working tree .git test dir/foo Marcello Henrique, faraohh@gmail.com Git o b´sico a 37 / 84
  • 80. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° echo test > test HEAD ° git add test master index ° git commit -m‘‘test’’ commit commit 6f0104... 52a0ff... ° mkdir dir tree tree ° echo foo > dir/foo 52a266... cad6ae... ° git add dir/foo blob tree "dir" 9daefb... 205f6b... "test" ° git commit -m‘‘foo’’ blob 257cc5... "foo" Created commit 52a0ff4: foo 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 dir/foo repository working tree .git test dir/foo Marcello Henrique, faraohh@gmail.com Git o b´sico a 37 / 84
  • 81. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca ° git status mostra. . . staged (Modificados) unstaged (N˜o modificados) a untracked (N˜o versionados) a Marcello Henrique, faraohh@gmail.com Git o b´sico a 38 / 84
  • 82. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca ° git diff Mudan¸as entre ´ c ındice e os arquivos de trabalho ° git diff --cached Mudan¸as entre o HEAD e o ´ c ındice ° git diff HEAD Mudan¸as entre o HEAD e os arquivos de trabalho c ° git diff °commit °commit Mudan¸as entre dois commits c Marcello Henrique, faraohh@gmail.com Git o b´sico a 39 / 84
  • 83. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca ° git diff Mudan¸as entre ´ c ındice e os arquivos de trabalho ° git diff --cached Mudan¸as entre o HEAD e o ´ c ındice ° git diff HEAD Mudan¸as entre o HEAD e os arquivos de trabalho c ° git diff °commit °commit Mudan¸as entre dois commits c Marcello Henrique, faraohh@gmail.com Git o b´sico a 39 / 84
  • 84. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca ° git diff Mudan¸as entre ´ c ındice e os arquivos de trabalho ° git diff --cached Mudan¸as entre o HEAD e o ´ c ındice ° git diff HEAD Mudan¸as entre o HEAD e os arquivos de trabalho c ° git diff °commit °commit Mudan¸as entre dois commits c Marcello Henrique, faraohh@gmail.com Git o b´sico a 39 / 84
  • 85. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca ° git diff Mudan¸as entre ´ c ındice e os arquivos de trabalho ° git diff --cached Mudan¸as entre o HEAD e o ´ c ındice ° git diff HEAD Mudan¸as entre o HEAD e os arquivos de trabalho c ° git diff °commit °commit Mudan¸as entre dois commits c Marcello Henrique, faraohh@gmail.com Git o b´sico a 39 / 84
  • 86. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca specific commit full hash 6bb1270ffb60cbfef87266d2d4b4abe4218d9c6 short hash 6bb127 tag v1.5.6.1 local branch master remote branch origin/master ID. . . by message “:/some text” checkout HEAD last fetch FETCH HEAD previous head ORIG HEAD ... Marcello Henrique, faraohh@gmail.com Git o b´sico a 40 / 84
  • 87. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Um commit antes do HEAD HEAD^ == HEAD∼1 Marcello Henrique, faraohh@gmail.com Git o b´sico a 41 / 84
  • 88. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Alguns commits antes do HEAD HEAD^^^ == HEAD∼3 Marcello Henrique, faraohh@gmail.com Git o b´sico a 42 / 84
  • 89. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Alguns commits antes do master master^^^ == master∼3 Marcello Henrique, faraohh@gmail.com Git o b´sico a 43 / 84
  • 90. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Vocˆ quer ver os de ontem? e @{yesterday} == HEAD@{yesterday} Marcello Henrique, faraohh@gmail.com Git o b´sico a 44 / 84
  • 91. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Que tal my-other-branch em primeiro de Junho? my-other-branch@{June.1} Marcello Henrique, faraohh@gmail.com Git o b´sico a 45 / 84
  • 92. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Algumas mudan¸as atr´s do master? c a master@{3} Marcello Henrique, faraohh@gmail.com Git o b´sico a 46 / 84
  • 93. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Visualiza¸˜o do ´ltimo commit. . . ca u ° git show commit 83b2d051814e884a8e264127ed47552a5dcf6c1d Author: Bart Trojanowski <bart@jukie.net> Date: Thu Jul 3 21:44:39 2008 -0400 changed one line diff --git a/test b/test index 808a2c4..99810fa 100644 --- a/test +++ b/test @@ -1,3 +1,3 @@ Some old text before the change. -Some text for removal. +Replacement line. Some old text after the change. Marcello Henrique, faraohh@gmail.com Git o b´sico a 47 / 84
  • 94. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Somente as estat´ ısticas. . . ° git show --stat commit 83b2d051814e884a8e264127ed47552a5dcf6c1d Author: Bart Trojanowski <bart@jukie.net> Date: Thu Jul 3 21:44:39 2008 -0400 changed one line test | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) Marcello Henrique, faraohh@gmail.com Git o b´sico a 48 / 84
  • 95. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Igual as infoma¸˜es de estado do SVN. . . co ° git show --name-status commit 3d3d2989b817af3fd4fa6d63f200113bd6c94bdb Author: Bart Trojanowski <bart@jukie.net> Date: Thu Jul 3 22:59:13 2008 -0400 something more interesting A sub/bar D sub/foo M test Marcello Henrique, faraohh@gmail.com Git o b´sico a 49 / 84
  • 96. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Rever qualquer outro commit. . . ° git show HEAD ° git show HEAD^^^ ° git show master~10 ° git show master@{May.16} ... Marcello Henrique, faraohh@gmail.com Git o b´sico a 50 / 84
  • 97. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Mostrar um arquivo (ou ´rvore) no hist´rico. . . a o ° git show HEAD:file contents... Marcello Henrique, faraohh@gmail.com Git o b´sico a 51 / 84
  • 98. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Veja o hist´rico dos commits. . . o ° git log commit 3d3d2989b817af3fd4fa6d63f200113bd6c94bdb Author: Bart Trojanowski <bart@jukie.net> Date: Thu Jul 3 22:59:13 2008 -0400 most recent commit commit 83b2d051814e884a8e264127ed47552a5dcf6c1d Author: Bart Trojanowski <bart@jukie.net> Date: Thu Jul 3 21:44:39 2008 -0400 second most recent commit 1cc1b35a611c39f49842e2ca28d40886c1ae9b7c Author: Bart Trojanowski <bart@jukie.net> Date: Thu Jul 3 21:44:05 2008 -0400 middle commit commit 411515f51a78d66a27a7d56ebe9f70dbd2bff008 Author: Bart Trojanowski <bart@jukie.net> Date: Thu Jul 3 21:43:36 2008 -0400 second oldest . . Marcello Henrique, faraohh@gmail.com . Git o b´sico a 52 / 84
  • 99. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca git log ´ impressionante! e Marcello Henrique, faraohh@gmail.com Git o b´sico a 53 / 84
  • 100. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Limita por faixa. . . ° git log tag..branch ° git log HEAD~10.. ° git log branch1 branch2 ^common ° git log -10 ° git log -10 master@{yesterday} ° git log --since="May 1" --until="June 1" Marcello Henrique, faraohh@gmail.com Git o b´sico a 54 / 84
  • 101. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Limita por atributos do commit. . . ° git log --author=fred ° git log --committer=joe ° git log --grep="commit.*message.*text" Marcello Henrique, faraohh@gmail.com Git o b´sico a 55 / 84
  • 102. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Presquisa por uma mudan¸a. . . c ° git log -S‘‘some code change’’ ° git log --pickaxe-regex -S‘‘some.*code.*change’’ Marcello Henrique, faraohh@gmail.com Git o b´sico a 56 / 84
  • 103. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Limita por mudan¸as espec´ c ıficas no caminho. . . ° git log -- some/file Marcello Henrique, faraohh@gmail.com Git o b´sico a 57 / 84
  • 104. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Inspe¸˜o ca Outros modos de pesquisa. . . ° git grep -e "pattern" -- some/file ° git grep -e "pattern" branch -- some/file Marcello Henrique, faraohh@gmail.com Git o b´sico a 58 / 84
  • 105. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Referˆncias e Mais r´pido a Mais male´vel a Discart´vel a 3 tipos b´sico a Marcello Henrique, faraohh@gmail.com Git o b´sico a 59 / 84
  • 106. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Referˆncias e Mais r´pido a Mais male´vel a Discart´vel a 3 tipos b´sico a Marcello Henrique, faraohh@gmail.com Git o b´sico a 59 / 84
  • 107. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Referˆncias e Mais r´pido a Mais male´vel a Discart´vel a 3 tipos b´sico a Marcello Henrique, faraohh@gmail.com Git o b´sico a 59 / 84
  • 108. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Referˆncias e Mais r´pido a Mais male´vel a Discart´vel a 3 tipos b´sico a Marcello Henrique, faraohh@gmail.com Git o b´sico a 59 / 84
  • 109. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Local branches ° git branch -l branch1 branch2 * master .git/refs/heads/<branch> Marcello Henrique, faraohh@gmail.com Git o b´sico a 60 / 84
  • 110. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes tags ° git tag -l tag1 tag2 tag3 .git/refs/tags/<tag> Marcello Henrique, faraohh@gmail.com Git o b´sico a 61 / 84
  • 111. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Remote branches ° git branch -r fred/master joe/master joe/another-branch .git/refs/remotes/<remote>/<branch> Marcello Henrique, faraohh@gmail.com Git o b´sico a 62 / 84
  • 112. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Remote branches ° git branch name commit Nova branch “name” sobre HEAD ou espec´ ıfico commit Marcello Henrique, faraohh@gmail.com Git o b´sico a 63 / 84
  • 113. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Remote branches ° git checkout -f name Atualiza os arquivos no branch “name” Optionalmente for¸a subscrever mudan¸as nos arquivos c c Marcello Henrique, faraohh@gmail.com Git o b´sico a 64 / 84
  • 114. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Remote branches ° git checkout -b name commit Atualiza os arquivos criando “name” branch Marcello Henrique, faraohh@gmail.com Git o b´sico a 65 / 84
  • 115. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Remote branches ° git checkout name error: You have local changes to ’filename’; cannot switch branches. ° git checkout -m name merge outstanding diff onto branch “name” Pode resultar em conflito Marcello Henrique, faraohh@gmail.com Git o b´sico a 66 / 84
  • 116. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Come¸amos com uma ´rvore c a A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 117. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git checkout -b bug-fix HEAD bug−fix A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 118. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git commit -a -m‘‘B’’ HEAD bug−fix B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 119. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git commit -a -m‘‘C’’ HEAD bug−fix C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 120. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Vocˆ tem uma id´ia arrasadora e e HEAD bug−fix C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 121. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Vocˆ tem uma id´ia arrasadora e e ° git checkout -b wicked master bug−fix C HEAD B wicked A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 122. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git commit -a -m‘‘D’’ HEAD D wicked bug−fix C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 123. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git commit -a -m‘‘E’’ HEAD E wicked D bug−fix C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 124. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Vocˆ chegou em um ponto e aceit´vel a HEAD E wicked D bug−fix C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 125. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Vocˆ chegou em um ponto e aceit´vel a ° git tag -a -m‘‘got somewhere’’ good HEAD wicked E good D bug−fix C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 126. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Gerenciar corre¸˜es de bug co HEAD wicked E good D bug−fix C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 127. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git checkout bug-fix wicked E good HEAD D bug−fix C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 128. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git commit -a -m‘‘F’’ HEAD bug−fix F wicked E good D C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 129. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Vocˆ s´ pensa na sua vers˜o e o a boa. . . HEAD bug−fix F wicked E good D C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 130. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Vocˆ s´ pensa na sua vers˜o e o a boa. . . ° git checkout wicked HEAD bug−fix F wicked E good D C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 131. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes . . . Ent˜o vocˆ termina sua a e funcionalidade arrasadora ° git commit -a -m‘‘G’’ HEAD G wicked bug−fix F E good D C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 132. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Funcionalidade pronta bug est˜o corrigidos a HEAD . . . hora de mesclar! G wicked bug−fix F E good D C B A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 133. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git checkout master G wicked bug−fix F E good D C B HEAD A master Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 134. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git reset --hard bug-fix HEAD master G wicked bug−fix F E good D C B A Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 135. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes ° git merge wicked HEAD master H G wicked bug−fix F E good D C B A Marcello Henrique, faraohh@gmail.com Git o b´sico a 67 / 84
  • 136. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mesclando ° git merge <branch> ... Mescla m´ltiplas branches u Cria commit com 2+ pais Pode causar conflito Nota: Requer interven¸˜o do usu´rio ca a Marcello Henrique, faraohh@gmail.com Git o b´sico a 68 / 84
  • 137. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mesclando Mais um exemplo one A Marcello Henrique, faraohh@gmail.com Git o b´sico a 69 / 84
  • 138. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mesclando Duas branches one two B C A Marcello Henrique, faraohh@gmail.com Git o b´sico a 69 / 84
  • 139. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mesclando ° git checkout -b three two one three two B C A Marcello Henrique, faraohh@gmail.com Git o b´sico a 69 / 84
  • 140. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mesclando ° git checkout -b three two ° git merge one three one two D B C A Marcello Henrique, faraohh@gmail.com Git o b´sico a 69 / 84
  • 141. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mesclando three one two G E F D B C A Marcello Henrique, faraohh@gmail.com Git o b´sico a 69 / 84
  • 142. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mesclando ° git checkout three three one two G E F D B C A Marcello Henrique, faraohh@gmail.com Git o b´sico a 69 / 84
  • 143. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mesclando ° git checkout three ° git merge one two three H one two G E F D B C A Marcello Henrique, faraohh@gmail.com Git o b´sico a 69 / 84
  • 144. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mesclando ° git checkout three ° git merge one two three H one two “octopus” G E F D B C A Marcello Henrique, faraohh@gmail.com Git o b´sico a 69 / 84
  • 145. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Rebase ° git rebase <branch> Tranfere novos trabalhos para uma nova base Pode causar conflito Nota: Requer interven¸˜o do usu´rio ca a Marcello Henrique, faraohh@gmail.com Git o b´sico a 70 / 84
  • 146. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c Temos 2 ´rvores identicas a Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 147. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test F test E E D D master C master C B B A A ° git merge master Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 148. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test F test E E D D master C master C B B A A Que f´cil! a Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 149. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test F test E E D D master C master C B B A A ° git rebase master Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 150. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test test F E’ E E D’ D D master C master C B B A A ° git rebase master Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 151. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test test F E’ E E D’ e D D d master C master C B B A A ° git rebase master Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 152. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test test F E’ E E D’ e D D d master C master C B B A A ° git rebase master Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 153. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test test F E’ E E D’ e D D d master C master C B B A A ° git rebase master Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 154. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test test F E’ E E D’ e D D d master C master C B B A A ° git rebase master Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 155. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test test F E’ E E D’ e D D d master C master C B B A A ° git rebase master Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 156. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test test F E’ E E D’ D D master C master C B B A A ° git rebase master Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 157. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Diferen¸a entre merge e rebase c merge rebase test test F E’ E D’ D master C master C B B A A Marcello Henrique, faraohh@gmail.com Git o b´sico a 71 / 84
  • 158. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Remotes ° git clone <remote> Replica reposit´rio remoto o Preenche o novo reposit´rio o Atualiza novas ´rvores de trabalho a Marcello Henrique, faraohh@gmail.com Git o b´sico a 72 / 84
  • 159. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Protocolos Reposit´rio local o /home/git/project.git/ file:///home/git/project.git/ Protocolo http http://repo.or.cz/r/git.git Protocolo nativo git git://repo.or.cz/git.git Protocolo ssh ssh://bart@jukie.net/~git/project.git/ bart@jukie.net/~git/project.git/ Marcello Henrique, faraohh@gmail.com Git o b´sico a 73 / 84
  • 160. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Protocolos Reposit´rio local o /home/git/project.git/ file:///home/git/project.git/ Protocolo http http://repo.or.cz/r/git.git Protocolo nativo git git://repo.or.cz/git.git Protocolo ssh ssh://bart@jukie.net/~git/project.git/ bart@jukie.net/~git/project.git/ Marcello Henrique, faraohh@gmail.com Git o b´sico a 73 / 84
  • 161. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Protocolos Reposit´rio local o /home/git/project.git/ file:///home/git/project.git/ Protocolo http http://repo.or.cz/r/git.git Protocolo nativo git git://repo.or.cz/git.git Protocolo ssh ssh://bart@jukie.net/~git/project.git/ bart@jukie.net/~git/project.git/ Marcello Henrique, faraohh@gmail.com Git o b´sico a 73 / 84
  • 162. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Protocolos Reposit´rio local o /home/git/project.git/ file:///home/git/project.git/ Protocolo http http://repo.or.cz/r/git.git Protocolo nativo git git://repo.or.cz/git.git Protocolo ssh ssh://bart@jukie.net/~git/project.git/ bart@jukie.net/~git/project.git/ Marcello Henrique, faraohh@gmail.com Git o b´sico a 73 / 84
  • 163. repo.or.cz master F C v0.2.0 B A v0.1.0 git://repo.or.cz/project.git
  • 164. repo.or.cz master F C v0.2.0 B A v0.1.0 ° git clone ssh+git://repo.or.cz/project.git
  • 165. repo.or.cz local master F C v0.2.0 B A v0.1.0 ° git clone ssh+git://repo.or.cz/project.git Initialize project/.git Initialized empty Git repository in /tmp/project/.git/ remote: Counting objects: 77575, done. remote: Compressing objects: 100% (26407/26407), done. remote: Total 77575 (delta 55750), reused 71007 (delta 49775) Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done. Resolving deltas: 100% (55750/55750), done. Checking out files: 100% (1396/1396), done.
  • 166. repo.or.cz local master F C v0.2.0 B A v0.1.0 ° git clone ssh+git://repo.or.cz/project.git Initialize project/.git Initialized empty Git repository in /tmp/project/.git/ remote: Counting objects: 77575, done. remote: Compressing objects: 100% (26407/26407), done. remote: Total 77575 (delta 55750), reused 71007 (delta 49775) Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done. Resolving deltas: 100% (55750/55750), done. Checking out files: 100% (1396/1396), done.
  • 167. repo.or.cz local master F C v0.2.0 B A v0.1.0 ° git clone ssh+git://repo.or.cz/project.git build-tree Initialize build-tree/.git Initialized empty Git repository in /tmp/build-tree/.git/ remote: Counting objects: 77575, done. remote: Compressing objects: 100% (26407/26407), done. remote: Total 77575 (delta 55750), reused 71007 (delta 49775) Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done. Resolving deltas: 100% (55750/55750), done. Checking out files: 100% (1396/1396), done.
  • 168. repo.or.cz local master F C v0.2.0 B A v0.1.0 ° git clone ssh+git://repo.or.cz/project.git Initialize project/.git Initialized empty Git repository in /tmp/project/.git/ remote: Counting objects: 77575, done. remote: Compressing objects: 100% (26407/26407), done. remote: Total 77575 (delta 55750), reused 71007 (delta 49775) Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done. Resolving deltas: 100% (55750/55750), done. Checking out files: 100% (1396/1396), done.
  • 169. ° git clone ssh+git://repo.or.cz/project.git Initialize project/.git Initialized empty Git repository in /tmp/project/.git/
  • 170. repo.or.cz local master origin/master F F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 ° git clone ssh+git://repo.or.cz/project.git Initialize project/.git Initialized empty Git repository in /tmp/project/.git/ remote: Counting objects: 77575, done. remote: Compressing objects: 100% (26407/26407), done. remote: Total 77575 (delta 55750), reused 71007 (delta 49775) Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done. Resolving deltas: 100% (55750/55750), done. Checking out files: 100% (1396/1396), done.
  • 171. "origin" local master origin/master F F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 ° git clone ssh+git://repo.or.cz/project.git Initialize project/.git Initialized empty Git repository in /tmp/project/.git/ remote: Counting objects: 77575, done. remote: Compressing objects: 100% (26407/26407), done. remote: Total 77575 (delta 55750), reused 71007 (delta 49775) Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done. Resolving deltas: 100% (55750/55750), done. Checking out files: 100% (1396/1396), done.
  • 172. "origin" local master origin/master F F master C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ ‘−− foo ° git clone ssh+git://repo.or.cz/project.git Initialize project/.git Initialized empty Git repository in /tmp/project/.git/ remote: Counting objects: 77575, done. remote: Compressing objects: 100% (26407/26407), done. remote: Total 77575 (delta 55750), reused 71007 (delta 49775) Receiving objects: 100% (77575/77575), 22.87 MiB | 798 KiB/s, done. Resolving deltas: 100% (55750/55750), done. Checking out files: 100% (1396/1396), done.
  • 173. "origin" local master origin/master F F master C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ ‘−− foo ° git branch -a ° git tag -l * master v0.1.0 origin/master v0.2.0
  • 174. "origin" local master H origin/master G F F master C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ ‘−− foo
  • 175. "origin" local master H origin/master G F F master C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ ‘−− foo ° git fetch
  • 176. "origin" local master H origin/master G F F master C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ ‘−− foo ° git fetch remote: Counting objects: 236, done. remote: Compressing objects: 100% (190/190), done. remote: Total 190 (delta 170), reused 0 (delta 0) Receiving objects: 100% (190/190), 69.53 KiB, done. Resolving deltas: 100% (170/170), completed with 40 local objects. From mail.jukie.net:work/oclug/intro-to-git 573ff80..06e3703 master -> origin/master
  • 177. "origin" local master H origin/master G F F master C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ ‘−− foo ° git fetch remote: Counting objects: 236, done. remote: Compressing objects: 100% (190/190), done. remote: Total 190 (delta 170), reused 0 (delta 0) Receiving objects: 100% (190/190), 69.53 KiB, done. Resolving deltas: 100% (170/170), completed with 40 local objects. From mail.jukie.net:work/oclug/intro-to-git 573ff80..06e3703 master -> origin/master
  • 178. "origin" local master origin/master H H G F G F master C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ ‘−− foo ° git fetch remote: Counting objects: 236, done. remote: Compressing objects: 100% (190/190), done. remote: Total 190 (delta 170), reused 0 (delta 0) Receiving objects: 100% (190/190), 69.53 KiB, done. Resolving deltas: 100% (170/170), completed with 40 local objects. From mail.jukie.net:work/oclug/intro-to-git 573ff80..06e3703 master -> origin/master
  • 179. "origin" local master origin/master H H G F G F master C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ ‘−− foo . . . Nenhuma mudan¸a no disco? c
  • 180. "origin" local master origin/master H H G F G F master C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ ‘−− foo git fetch somente atualiza DAG
  • 181. "origin" local master origin/master H H master G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−−fiz ‘−− foo git merge origin/master fast-forwards master para origin/master e atualiza a ´rvore de trabalho a
  • 182. "origin" local master origin/master H H master G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo git fetch + git merge = git pull
  • 183. "origin" local master origin/master H H master G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−−bar ‘−− sub/ |−−fiz ‘−− foo Vamos fazer alguns commit locais
  • 184. "origin" local master origin/master H H master G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−−bar ‘−− sub/ |−−fiz ‘−− foo ° git commit -a -m‘‘I’’
  • 185. "origin" local master master origin/master I H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−−bar ‘−− sub/ |−−fiz ‘−− foo ° git commit -a -m‘‘I’’ Created commit b618aed: I 2 files changed, 11 insertions(+), 20 deletions(-)
  • 186. "origin" local master master origin/master I H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo
  • 187. "origin" local master master origin/master I H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git push
  • 188. "origin" local master master I origin/master I H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git push Counting objects: 9, done. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 810 bytes, done. Total 5 (delta 4), reused 0 (delta 0) refs/heads/master: 9ddc135 -> 15b67c0 To ssh+git://repo.or.cz/project.git 9ddc135..15b67c0 master -> master
  • 189. "origin" local master origin/master I I master H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git push Counting objects: 9, done. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 810 bytes, done. Total 5 (delta 4), reused 0 (delta 0) refs/heads/master: 9ddc135 -> 15b67c0 To ssh+git://repo.or.cz/project.git 9ddc135..15b67c0 master -> master
  • 190. "origin" local master origin/master I I master H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo
  • 191. "origin" foo.com master I H G F C v0.2.0 B A v0.1.0 . . . Entretanto, noutros locais na Internet . . .
  • 192. "origin" foo.com master I H G F C v0.2.0 B A v0.1.0 Fred clones o projeto.
  • 193. "origin" foo.com master master I I H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 Fred clones o projeto.
  • 194. "origin" foo.com master master J I I H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 . . . e faz mais mudan¸as. c
  • 195. "origin" foo.com master master J I I H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 Fred n˜o pode empurrar (push). a
  • 196. "origin" foo.com master master J I I H H G F G F C v0.2.0 C v0.2.0 B B A v0.1.0 A v0.1.0 From: fred@foo.com Subject: I fixed a bug Please pull from http://foo.com/project.git/ -Fred
  • 197. "origin" local foo.com master master master K J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo From: fred@foo.com Subject: I fixed a bug Please pull from http://foo.com/project.git/ -Fred
  • 198. "origin" local foo.com master master master K J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git remote add fred http://foo.com/project.git/
  • 199. "origin" local foo.com master master master K J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git remote add fred http://foo.com/project.git/
  • 200. "origin" local "fred" master master master K J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git remote add fred http://foo.com/project.git/
  • 201. "origin" local "fred" master master master K J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git fetch fred
  • 202. "origin" local "fred" master master master K J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git fetch fred
  • 203. "origin" local "fred" master master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git fetch fred
  • 204. "origin" local "fred" master master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo
  • 205. "origin" local "fred" master master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git log fred/master
  • 206. "origin" local "fred" master master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git log fred/master ° git log fred/master ^aster m
  • 207. "origin" local "fred" master master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git log fred/master ° git log fred/master ^aster m ° git log -p fred/master ^aster m
  • 208. "origin" local "fred" master master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git checkout -b fred-fix fred/master
  • 209. "origin" local "fred" master fred−fix master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−−bar ‘−− sub/ |−−fiz ‘−−foo ° git checkout -b fred-fix fred/master
  • 210. "origin" local "fred" master fred−fix master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−−bar ‘−− sub/ |−−fiz ‘−−foo ° git checkout master
  • 211. "origin" local "fred" master L fred−fix master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−−bar ‘−− sub/ |−−fiz ‘−−foo ° git checkout master ° git merge fred-fix
  • 212. "origin" local "fred" master L master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git checkout master ° git merge fred-fix ° git branch -d fred-fix
  • 213. "origin" local "fred" master L master fred/master master K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git push
  • 214. "origin" local "fred" master master L L master fred/master K J K J J origin/master I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git push
  • 215. "origin" local "fred" master master origin/master L L master fred/master K J K J J I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo ° git push
  • 216. "origin" local "fred" master master origin/master L L master fred/master K J K J J I I I H H H G F G F G F C v0.2.0 C v0.2.0 C v0.2.0 B B B A v0.1.0 A v0.1.0 A v0.1.0 /tmp/project/ |−−.git/ |−− bar ‘−− sub/ |−− fiz ‘−− foo
  • 217. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Ambientes Gr´ficos a gitk Agrad´vel visualiza¸˜o da ´rvore de revis˜es a ca a o git gui Executar tarefas s˜o banais em um ambiente de janelas a Ex: add/rm arquivos, fazer commits, branch, etc. . . Marcello Henrique, faraohh@gmail.com Git o b´sico a 75 / 84
  • 218. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Ambientes Gr´ficos a gitk Agrad´vel visualiza¸˜o da ´rvore de revis˜es a ca a o git gui Executar tarefas s˜o banais em um ambiente de janelas a Ex: add/rm arquivos, fazer commits, branch, etc. . . Marcello Henrique, faraohh@gmail.com Git o b´sico a 75 / 84
  • 221. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Objetos perdidos Lembram dos objetos perdidos ? Marcello Henrique, faraohh@gmail.com Git o b´sico a 77 / 84
  • 222. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Objetos perdidos .git/objects |-- 23 | ‘-- d4bd826aba9e29aaace9411cc175b784edc399 |-- 76 | ‘-- 49f82d40a98b1ba59057798e47aab2a99a11d3 |-- c4 | ‘-- aaefaa8a48ad4ad379dc1002b78f1a3e4ceabc |-- e7 | ‘-- 4be61128eef713459ca4e32398d689fe80864e |-- info | ‘-- packs ‘-- pack |-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.idx ‘-- pack-b7b026b1a0b0f193db9dea0b0d7367d25d3a68cc.pack Marcello Henrique, faraohh@gmail.com Git o b´sico a 78 / 84
  • 223. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Objetos perdidos ° git gc Counting objects: 636, done. Compressing objects: 100% (635/635), done. Writing objects: 100% (636/636), done. Total 636 (delta 486), reused 0 (delta 0) Removing duplicate objects: 100% (256/256), done. GC executa automaticamente quando vocˆ obtem 6700 e objetos (configur´vel) a Marcello Henrique, faraohh@gmail.com Git o b´sico a 79 / 84
  • 224. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Objetos perdidos ° git gc Counting objects: 636, done. Compressing objects: 100% (635/635), done. Writing objects: 100% (636/636), done. Total 636 (delta 486), reused 0 (delta 0) Removing duplicate objects: 100% (256/256), done. GC executa automaticamente quando vocˆ obtem 6700 e objetos (configur´vel) a Marcello Henrique, faraohh@gmail.com Git o b´sico a 79 / 84
  • 225. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Outras Leituras Site oficial http://git.or.cz Git wiki git.or.cz/gitwiki Podcast (Scott Chacon) GitCasts.com Bart Jukie http://www.jukie.net/∼bart/blog/ Apresenta¸˜o Original ca git://tachyon.jukie.net/intro-to-git.git/ Marcello Henrique, faraohh@gmail.com Git o b´sico a 80 / 84
  • 226. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Mais links git-scm http://www.git-scm.com V´ ıdeo Linus sobre o git http://www.youtube.com/watch?v=4XpnKHJAok8 Meu blog http://faraohh.blogspot.com Cercomp/UFG http://www.cercomp.ufg.br Marcello Henrique, faraohh@gmail.com Git o b´sico a 81 / 84
  • 227. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes The truth credit http://www.jukie.net/~bart/blog/ Bart Trojanowski Hi Marcello, * Marcello Henrique <faraohh@gmail.com> [081023 15:12]: > I seen that you use beamer, you could share their sources in latex/beamer? ( > http://excess.org/article/2008/07/ogre-git-tutorial/) Here you go... git://tachyon.jukie.net/intro-to-git.git/ > Would like to create a presentation for beginners. I grant you rights to the material if used with attribution. Cheers, -Bart Marcello Henrique, faraohh@gmail.com Git o b´sico a 82 / 84
  • 228. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Perguntas? Perguntas? Marcello Henrique, faraohh@gmail.com Git o b´sico a 83 / 84
  • 229. Conceitos Comandos Reposit´rio o Branching Usando GIT Remotes Perguntas? Obrigado! Marcello Henrique, faraohh@gmail.com Git o b´sico a 84 / 84