SlideShare uma empresa Scribd logo
1 de 178
Começando
com Git




            www.akitaonrails.com
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git




            www.akitaonrails.com
Não é Subversion
Não é Subversion


Não é BitKeeper
Não é Subversion


Não é BitKeeper


Filesystem Distribuído
Não é Subversion


Não é BitKeeper


Filesystem Distribuído


E ciente
Não é Subversion


Não é BitKeeper


Filesystem Distribuído


E ciente


Github
P.J. Hyett
                             Chris
             Tom Preston   Wanstrath
Social Networking
Social Networking

Free para Open Source
Social Networking

Free para Open Source

Repositórios Privados Pagos
Social Networking

Free para Open Source

Repositórios Privados Pagos

Github Firewall - repositório local
Social Networking

Free para Open Source

Repositórios Privados Pagos

Github Firewall - repositório local

Mercurial, Subversion
Social Networking

Free para Open Source

Repositórios Privados Pagos

Github Firewall - repositório local

Mercurial, Subversion

Resque, BERT, Unicorn
Central      CVS, Subversion, Perforce

 Delta

           Distribuído   Darcs, Mercurial



            Central

Snapshot                               BitKeeper

           Distribuído   Git, Bazaar
Estrutura de um
Commit




             www.akitaonrails.com
Commit
 Tag
  Tree
Commit
 Tag



 Tree    /public
Commit
 Tag



 Tree          /public


        Blob        index.html
Commit
 Tag
               a0c14d8b1624fb08047808
               b333d97eabbfe67ad1


 Tree          /public


        Blob        index.html
Tag   v0.1



      Commit
                      a0c14d8b1624fb08047808
                      b333d97eabbfe67ad1


        Tree          /public


               Blob        index.html
a0c14d8b1624fb08047808b333d97eabbfe67ad1
a0c14d8b1624fb08047808b333d97eabbfe67ad1


a0c14d8b1624fb0
a0c14d8b1624fb08047808b333d97eabbfe67ad1


a0c14d8b1624fb0


a0c14
C1


/public


   index.html




/images


logo.gif
C1              C2


/public         /public


   index.html      index.html




/images         /images


logo.gif        logo.gif
C1              C2


/public         /public


   index.html      index.html


                   about.html


/images         /images


logo.gif        logo.gif
C1              C2              C3


/public         /public         /public


   index.html      index.html      index.html


                   about.html      about.html


/images         /images         /images


logo.gif        logo.gif        logo.gif
C1              C2              C3


/public         /public         /public


   index.html      index.html      index.html


                   about.html      about.html


/images         /images         /images


logo.gif        logo.gif        logo.gif
Repositório




   Index




Working Area
Repositório




   Index




Working Area
Repositório




    Index




git add Area
 Working
Repositório




    Index




git add Area
 Working
Repositório




    Index




git commit
 Working Area
Repositório




    Index




git commit
 Working Area
Repositório




   Index




Working Area
Repositório




   Index




git rm --cached
 Working Area
Repositório




    Index




git checkout
 Working Area
Untracked   Index   Repo




Modi ed
Untracked         Index   Repo

            Add




Modi ed
Untracked                 Index   Repo

               Add

            Rm --cached



Modi ed
Untracked                 Index            Repo

               Add                Commit

            Rm --cached



Modi ed
Untracked                 Index            Repo

               Add                Commit

            Rm --cached



Modi ed

               Add
Untracked                 Index            Repo

               Add                Commit

            Rm --cached



Modi ed

               Add


            Reset HEAD
Untracked                 Index            Repo

                   Add                Commit

                Rm --cached



     Modi ed

                   Add


Checkout        Reset HEAD
Untracked                 Index            Repo

                   Add                Commit

                Rm --cached



     Modi ed

                   Add                Commit


Checkout        Reset HEAD
init          Cria repo

              Avalia estado dos arquivos no diretório de
status        trabalho e no índice

add           Adiciona ao índice


rm --cached   Retira arquivo novo do índice


reset HEAD    Retira arquivo modi cado do índice


checkout      Reinicia arquivo modi cado fora do índice


commit        Grava conteúdo do índice e coloca no repo


log           mostra o histórico de commits no repo
Gerenciando o Índice




             www.akitaonrails.com
Mostra os commits que não estão mais
reflog              acessíveis no histórico



                    Apaga arquivos do diretório de trabalho
clean -f            que não fazem parte do repo



reset [--soft, --   Apaga commits totalmente (--hard) ou
hard] <commit>      mantém as modi cações (--soft)
Stashes e Branches




             www.akitaonrails.com
Grava arquivos do índice num stash
stash                     anônimo

                          Grava arquivos do índice num stash
stash save “<nome>”       descrito

                     Aplica último stash gravado no diretório
stash apply <codigo> de trabalho. Opcional: código do stash

                          Aplica último stash gravado no diretório
stash pop                 de trabalho e apaga o stash

stash drop <codigo>       Apaga stash designado pelo <codigo>


stash list                Lista os stashes gravados


stash clear               Apaga todos os stashes gravados
Merge e Rebase




             www.akitaonrails.com
C1   master
C1   C2   master
C1   C2   master




                   git commit
bug x


C1   C2   master
bug x


C1   C2   master




           git checkout -b bug x
C3       bug x


C1   C2   master
C3        bug x


C1   C2   master




                   git commit
C3   C4       bug x


C1   C2   C5   master
C3      C4       bug x


C1   C2   C5      master




          desenvolvimento paralelo
C3   C4        bug x


C1   C2   C5        C6   master
C3   C4           bug x


C1   C2   C5           C6   master




               merge
C3   C4       bug x


C1   C2   C5   master
C3      C4       bug x


C1   C2   C5      master




               antes do merge
bug x


C1   C2   C3   C4   C5’   master
bug x


C1   C2   C3   C4       C5’   master




               Rebase
Rebase              bug x


C1   C2     C3     C4   C5’   master




          Merge


            C3     C4         bug x


C1   C2     C5          C6    master
branch                lista os branches criados


branch -d <nome>      apaga branch. Com -D, apaga forçado


checkout -b <nome>    cria novo branch a partir do branch atual

checkout -b <nome>    cria novo branch a partir de um commit,
[sha1, tag, branch]   um tag ou um branch que existe

                      mescla no branch atual a partir de outro
merge <branch>        branch

merge <branch>        faz a mescla mas sem gerar commit, deixa
--squase              tudo no índice antes

                      desfaz commits atuais, trás os commits
rebase <branch>       do outro branch e reaplica os commits
Repositório Remoto:
Modelo Centralizado




             www.akitaonrails.com
Clone Local 1




                Repositório
Clone Local 3
                  Central




                Clone Local 2
Clone Local 1




                Repositório
Clone Local 3                     Clone Local 4
                  Central




                Clone Local 2   git clone
Clone Local 1




                Repositório
Clone Local 3                     Clone Local 4
                  Central




                Clone Local 2   git push
Clone Local 1




                Repositório
Clone Local 3                     Clone Local 4
                  Central




                Clone Local 2   git push
Clone Local 1




                Repositório
Clone Local 3                     Clone Local 4
                  Central




                Clone Local 2   git push
Clone Local 1




                Repositório
Clone Local 3                     Clone Local 4
                  Central




                Clone Local 2   git pull
Clone Local 1




                Repositório
Clone Local 3                     Clone Local 4
                  Central




                Clone Local 2   git push
C5   master




C5   origin/master
C5   master




C5   C6       C7   origin/master
C5   master




C5   C6       C7    origin/master




              git fetch origin master
C5   C6   C7   master




C5   C6   C7   origin/master
C5   C6   C7     master




C5   C6   C7     origin/master




          git merge origin/master
C5   C6   C7   C9   master




C5   C6   C7   C8   origin/master
C5   C6   C7     C9      master




C5   C6   C7     C8      origin/master




          git fetch origin/master
C5   C6   C7     C9      master




C5   C6   C7     C8      origin/master




          git fetch origin/master
C8


C5   C6   C7   C9   C10       master




C5   C6   C7   C8   origin/master
C8


C5   C6   C7      C9     C10        master




C5   C6   C7      C8     origin/master




          git merge origin/master
C5   C6   C7   C9   master




C5   C6   C7   C8   origin/master
C5   C6   C7      C9     master




C5   C6   C7      C8     origin/master




               antes do merge
C5   C6   C7   C8   C9’       master




C5   C6   C7   C8   origin/master
C5   C6   C7      C8      C9’        master




C5   C6   C7      C8     origin/master




          git rebase origin/master
C5   C6   C7   C8   C9’   master




C5   C6   C7   C8   C9’   origin/master
C5   C6   C7   C8         C9’   master




C5   C6   C7   C8         C9’   origin/master




               git push
C5   master




C5   origin/master
bug x




C5   master




C5   origin/master
bug x




C5   master




C5   origin/master



                 git checkout -b bug x
C8       bug x




C5   master




C5   C7       origin/master
C8       bug x




C5   master




C5   C7       origin/master



              desenvolvimento paralelo
C8   bug x




C5   C7   master




C5   C7   origin/master
C8   bug x




C5   C7   master




C5   C7   origin/master



                     git pull
C7    C8’      bug x




C5   C7   master




C5   C7   origin/master
C7    C8’      bug x




C5   C7   master




C5   C7   origin/master



                   git rebase
bug x




C5   C7    C8’      master




C5   C7   origin/master
bug x




C5   C7    C8’      master




C5   C7   origin/master



                 git merge bug x
bug x




C5   C7   C8’   master




C5   C7   C8’   origin/master
bug x




C5   C7   C8’    master




C5   C7   C8’    origin/master



           git push origin master
bug x




C5   C7   C8’   master




C5   C7   C8’   origin/master
C5   C7   C8’    master




C5   C7   C8’    origin/master



            git branch -d bug x
remote add <nome>
                    Cria novo apontamento para repo remota
<url>


remote rm <nome>    Apaga apontamento remoto


push <remote>       Empurra os commits locais para o repo
<branch-remoto>     remoto na branch especi cada


fetch <remote>      Puxa novos commits do repo remoto para
<branch-remoto>     a branch especial <remote>/<branch>


pull <remote>       Mesma coisa que usar primeiro “fetch” e
<branch-remoto>     depois “merge” a partir do branch remoto
Repositório Remoto:
Modelo Distribuído




             www.akitaonrails.com
Github.com

Repositório
  Fork 2
       1
  Central




Integrador
   Local
Github.com

Repositório
  Fork 2         Fork 1
  Central




Integrador
   Local
Github.com

Repositório
  Fork 2         Fork 1
  Central




Integrador     Desenvolv.
   Local           1
Github.com

Repositório
                 Fork 1     Fork 2
  Central




Integrador     Desenvolv.
   Local           1
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Github.com

Repositório
                 Fork 1       Fork 2
  Central




Integrador     Desenvolv.   Desenvolv.
   Local           1            2
Conceitos e Comandos
Extras




             www.akitaonrails.com
Cria tag apontando ao commit do branch
tag <nome>    atual




push --tags   Envia todas as tags ao repo remoto




              Envia apenas a tag especi cada ao repo
push <tag>    remoto
Lidando com
Subversion




              www.akitaonrails.com
Faz clone do histórico inteiro de um
svn clone <url>   repositório Subversion



                  Trás os últimos commits do repo
svn fetch         Subversion



                  Envia os commits locais ao servidor
svn dcommit       Subversion
Considerações Finais




              www.akitaonrails.com
Scott Chacon
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Sobre Git
       Ubuntu
      Windows
      Mac OS X
   Primeiros Passos
Estrutura de um Commit
 Gerenciando o Índice
  Stashes e Branches
   Merge e Rebase
 Modelo Centralizado
  Modelo Distribuído
   Comandos Extras
Lidando com Subversion
 Considerações Finais
Con ra nossos outros
                         screencasts à venda em:

                  akitaonrails.com/screencasts




Informações: boss@akitaonrails.com

©2010 Fabio Akita             www.akitaonrails.com

Mais conteúdo relacionado

Semelhante a Guia completo sobre Git

Semelhante a Guia completo sobre Git (20)

Ferramenta git
Ferramenta gitFerramenta git
Ferramenta git
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Controle de versão e colaboração com Git
Controle de versão e colaboração com GitControle de versão e colaboração com Git
Controle de versão e colaboração com Git
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de Versões
 
Primeiros passos - GIT
Primeiros passos - GITPrimeiros passos - GIT
Primeiros passos - GIT
 
Git workshop
Git workshopGit workshop
Git workshop
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
[4Soft] Git para iniciantes
[4Soft] Git para iniciantes[4Soft] Git para iniciantes
[4Soft] Git para iniciantes
 
Git
GitGit
Git
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Git
GitGit
Git
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Gerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHubGerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHub
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Git
GitGit
Git
 
Git flow no projeto
Git flow no projetoGit flow no projeto
Git flow no projeto
 

Guia completo sobre Git

  • 1.
  • 2. Começando com Git www.akitaonrails.com
  • 3.
  • 4. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 5. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 6. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 7. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 8. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 9. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 10. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 11. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 12. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 13. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 14. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 15. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 16. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 17. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 18. Sobre Git www.akitaonrails.com
  • 19.
  • 20.
  • 22. Não é Subversion Não é BitKeeper
  • 23. Não é Subversion Não é BitKeeper Filesystem Distribuído
  • 24. Não é Subversion Não é BitKeeper Filesystem Distribuído E ciente
  • 25. Não é Subversion Não é BitKeeper Filesystem Distribuído E ciente Github
  • 26. P.J. Hyett Chris Tom Preston Wanstrath
  • 27.
  • 28.
  • 31. Social Networking Free para Open Source Repositórios Privados Pagos
  • 32. Social Networking Free para Open Source Repositórios Privados Pagos Github Firewall - repositório local
  • 33. Social Networking Free para Open Source Repositórios Privados Pagos Github Firewall - repositório local Mercurial, Subversion
  • 34. Social Networking Free para Open Source Repositórios Privados Pagos Github Firewall - repositório local Mercurial, Subversion Resque, BERT, Unicorn
  • 35. Central CVS, Subversion, Perforce Delta Distribuído Darcs, Mercurial Central Snapshot BitKeeper Distribuído Git, Bazaar
  • 36.
  • 37.
  • 38.
  • 39.
  • 40. Estrutura de um Commit www.akitaonrails.com
  • 41. Commit Tag Tree
  • 42. Commit Tag Tree /public
  • 43. Commit Tag Tree /public Blob index.html
  • 44. Commit Tag a0c14d8b1624fb08047808 b333d97eabbfe67ad1 Tree /public Blob index.html
  • 45. Tag v0.1 Commit a0c14d8b1624fb08047808 b333d97eabbfe67ad1 Tree /public Blob index.html
  • 46.
  • 50. C1 /public index.html /images logo.gif
  • 51. C1 C2 /public /public index.html index.html /images /images logo.gif logo.gif
  • 52. C1 C2 /public /public index.html index.html about.html /images /images logo.gif logo.gif
  • 53. C1 C2 C3 /public /public /public index.html index.html index.html about.html about.html /images /images /images logo.gif logo.gif logo.gif
  • 54. C1 C2 C3 /public /public /public index.html index.html index.html about.html about.html /images /images /images logo.gif logo.gif logo.gif
  • 55. Repositório Index Working Area
  • 56. Repositório Index Working Area
  • 57. Repositório Index git add Area Working
  • 58. Repositório Index git add Area Working
  • 59. Repositório Index git commit Working Area
  • 60. Repositório Index git commit Working Area
  • 61. Repositório Index Working Area
  • 62. Repositório Index git rm --cached Working Area
  • 63. Repositório Index git checkout Working Area
  • 64. Untracked Index Repo Modi ed
  • 65. Untracked Index Repo Add Modi ed
  • 66. Untracked Index Repo Add Rm --cached Modi ed
  • 67. Untracked Index Repo Add Commit Rm --cached Modi ed
  • 68. Untracked Index Repo Add Commit Rm --cached Modi ed Add
  • 69. Untracked Index Repo Add Commit Rm --cached Modi ed Add Reset HEAD
  • 70. Untracked Index Repo Add Commit Rm --cached Modi ed Add Checkout Reset HEAD
  • 71. Untracked Index Repo Add Commit Rm --cached Modi ed Add Commit Checkout Reset HEAD
  • 72. init Cria repo Avalia estado dos arquivos no diretório de status trabalho e no índice add Adiciona ao índice rm --cached Retira arquivo novo do índice reset HEAD Retira arquivo modi cado do índice checkout Reinicia arquivo modi cado fora do índice commit Grava conteúdo do índice e coloca no repo log mostra o histórico de commits no repo
  • 73. Gerenciando o Índice www.akitaonrails.com
  • 74. Mostra os commits que não estão mais reflog acessíveis no histórico Apaga arquivos do diretório de trabalho clean -f que não fazem parte do repo reset [--soft, -- Apaga commits totalmente (--hard) ou hard] <commit> mantém as modi cações (--soft)
  • 75. Stashes e Branches www.akitaonrails.com
  • 76. Grava arquivos do índice num stash stash anônimo Grava arquivos do índice num stash stash save “<nome>” descrito Aplica último stash gravado no diretório stash apply <codigo> de trabalho. Opcional: código do stash Aplica último stash gravado no diretório stash pop de trabalho e apaga o stash stash drop <codigo> Apaga stash designado pelo <codigo> stash list Lista os stashes gravados stash clear Apaga todos os stashes gravados
  • 77. Merge e Rebase www.akitaonrails.com
  • 78. C1 master
  • 79. C1 C2 master
  • 80. C1 C2 master git commit
  • 81. bug x C1 C2 master
  • 82. bug x C1 C2 master git checkout -b bug x
  • 83. C3 bug x C1 C2 master
  • 84. C3 bug x C1 C2 master git commit
  • 85. C3 C4 bug x C1 C2 C5 master
  • 86. C3 C4 bug x C1 C2 C5 master desenvolvimento paralelo
  • 87. C3 C4 bug x C1 C2 C5 C6 master
  • 88. C3 C4 bug x C1 C2 C5 C6 master merge
  • 89. C3 C4 bug x C1 C2 C5 master
  • 90. C3 C4 bug x C1 C2 C5 master antes do merge
  • 91. bug x C1 C2 C3 C4 C5’ master
  • 92. bug x C1 C2 C3 C4 C5’ master Rebase
  • 93. Rebase bug x C1 C2 C3 C4 C5’ master Merge C3 C4 bug x C1 C2 C5 C6 master
  • 94. branch lista os branches criados branch -d <nome> apaga branch. Com -D, apaga forçado checkout -b <nome> cria novo branch a partir do branch atual checkout -b <nome> cria novo branch a partir de um commit, [sha1, tag, branch] um tag ou um branch que existe mescla no branch atual a partir de outro merge <branch> branch merge <branch> faz a mescla mas sem gerar commit, deixa --squase tudo no índice antes desfaz commits atuais, trás os commits rebase <branch> do outro branch e reaplica os commits
  • 96. Clone Local 1 Repositório Clone Local 3 Central Clone Local 2
  • 97. Clone Local 1 Repositório Clone Local 3 Clone Local 4 Central Clone Local 2 git clone
  • 98. Clone Local 1 Repositório Clone Local 3 Clone Local 4 Central Clone Local 2 git push
  • 99. Clone Local 1 Repositório Clone Local 3 Clone Local 4 Central Clone Local 2 git push
  • 100. Clone Local 1 Repositório Clone Local 3 Clone Local 4 Central Clone Local 2 git push
  • 101. Clone Local 1 Repositório Clone Local 3 Clone Local 4 Central Clone Local 2 git pull
  • 102. Clone Local 1 Repositório Clone Local 3 Clone Local 4 Central Clone Local 2 git push
  • 103. C5 master C5 origin/master
  • 104. C5 master C5 C6 C7 origin/master
  • 105. C5 master C5 C6 C7 origin/master git fetch origin master
  • 106. C5 C6 C7 master C5 C6 C7 origin/master
  • 107. C5 C6 C7 master C5 C6 C7 origin/master git merge origin/master
  • 108. C5 C6 C7 C9 master C5 C6 C7 C8 origin/master
  • 109. C5 C6 C7 C9 master C5 C6 C7 C8 origin/master git fetch origin/master
  • 110. C5 C6 C7 C9 master C5 C6 C7 C8 origin/master git fetch origin/master
  • 111. C8 C5 C6 C7 C9 C10 master C5 C6 C7 C8 origin/master
  • 112. C8 C5 C6 C7 C9 C10 master C5 C6 C7 C8 origin/master git merge origin/master
  • 113. C5 C6 C7 C9 master C5 C6 C7 C8 origin/master
  • 114. C5 C6 C7 C9 master C5 C6 C7 C8 origin/master antes do merge
  • 115. C5 C6 C7 C8 C9’ master C5 C6 C7 C8 origin/master
  • 116. C5 C6 C7 C8 C9’ master C5 C6 C7 C8 origin/master git rebase origin/master
  • 117. C5 C6 C7 C8 C9’ master C5 C6 C7 C8 C9’ origin/master
  • 118. C5 C6 C7 C8 C9’ master C5 C6 C7 C8 C9’ origin/master git push
  • 119. C5 master C5 origin/master
  • 120. bug x C5 master C5 origin/master
  • 121. bug x C5 master C5 origin/master git checkout -b bug x
  • 122. C8 bug x C5 master C5 C7 origin/master
  • 123. C8 bug x C5 master C5 C7 origin/master desenvolvimento paralelo
  • 124. C8 bug x C5 C7 master C5 C7 origin/master
  • 125. C8 bug x C5 C7 master C5 C7 origin/master git pull
  • 126. C7 C8’ bug x C5 C7 master C5 C7 origin/master
  • 127. C7 C8’ bug x C5 C7 master C5 C7 origin/master git rebase
  • 128. bug x C5 C7 C8’ master C5 C7 origin/master
  • 129. bug x C5 C7 C8’ master C5 C7 origin/master git merge bug x
  • 130. bug x C5 C7 C8’ master C5 C7 C8’ origin/master
  • 131. bug x C5 C7 C8’ master C5 C7 C8’ origin/master git push origin master
  • 132. bug x C5 C7 C8’ master C5 C7 C8’ origin/master
  • 133. C5 C7 C8’ master C5 C7 C8’ origin/master git branch -d bug x
  • 134. remote add <nome> Cria novo apontamento para repo remota <url> remote rm <nome> Apaga apontamento remoto push <remote> Empurra os commits locais para o repo <branch-remoto> remoto na branch especi cada fetch <remote> Puxa novos commits do repo remoto para <branch-remoto> a branch especial <remote>/<branch> pull <remote> Mesma coisa que usar primeiro “fetch” e <branch-remoto> depois “merge” a partir do branch remoto
  • 136. Github.com Repositório Fork 2 1 Central Integrador Local
  • 137. Github.com Repositório Fork 2 Fork 1 Central Integrador Local
  • 138. Github.com Repositório Fork 2 Fork 1 Central Integrador Desenvolv. Local 1
  • 139. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Local 1
  • 140. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 141. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 142. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 143. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 144. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 145. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 146. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 147. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 148. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 149. Github.com Repositório Fork 1 Fork 2 Central Integrador Desenvolv. Desenvolv. Local 1 2
  • 150. Conceitos e Comandos Extras www.akitaonrails.com
  • 151. Cria tag apontando ao commit do branch tag <nome> atual push --tags Envia todas as tags ao repo remoto Envia apenas a tag especi cada ao repo push <tag> remoto
  • 152. Lidando com Subversion www.akitaonrails.com
  • 153. Faz clone do histórico inteiro de um svn clone <url> repositório Subversion Trás os últimos commits do repo svn fetch Subversion Envia os commits locais ao servidor svn dcommit Subversion
  • 154. Considerações Finais www.akitaonrails.com
  • 155.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.
  • 164. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 165. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 166. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 167. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 168. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 169. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 170. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 171. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 172. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 173. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 174. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 175. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 176. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 177. Sobre Git Ubuntu Windows Mac OS X Primeiros Passos Estrutura de um Commit Gerenciando o Índice Stashes e Branches Merge e Rebase Modelo Centralizado Modelo Distribuído Comandos Extras Lidando com Subversion Considerações Finais
  • 178. Con ra nossos outros screencasts à venda em: akitaonrails.com/screencasts Informações: boss@akitaonrails.com ©2010 Fabio Akita www.akitaonrails.com