SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
Git

       John Henrique Teixeira de Godoi

          Instituto de Ciˆncias e Tecnologia
                         e
          Universidade Federal de S˜o Paulo
                                   a
          S˜o Jos´ dos Campos – SP, Brasil
           a      e


                 Outubro, 2011



Programa de Educa¸˜o em Software Livre - PESL
                 ca
O quˆ? Por quˆ? Pra quˆ?
                       e        e        e
                               Rotina no git



Avisos!




      Esses slides s˜o baseados principalmente no GitReference.
                    a
      Algumas tradu¸˜es podem n˜o ser fi´is mas se adequavam
                    co         a       e
      melhor ao contesto.
      Al´m do cont´udo desses slides tem a parte pr´tica que ser´
        e          e                               a            a
      exibida durante a apresenta¸˜o.
                                 ca




             John Henrique Teixeira de Godoi   Git
O quˆ? Por quˆ? Pra quˆ?
                        e        e        e
                                Rotina no git



Indice

  1   O quˆ? Por quˆ? Pra quˆ?
           e         e      e
        Versionadores
        Distribu´
                ıdos
        Git




              John Henrique Teixeira de Godoi   Git
O quˆ? Por quˆ? Pra quˆ?
                        e        e        e
                                Rotina no git



Indice

  1   O quˆ? Por quˆ? Pra quˆ?
           e         e      e
        Versionadores
        Distribu´
                ıdos
        Git

  2   Rotina no git
        Reposit´rio
                o
        Desenvolvimento
        Dividir para Conquistar e Somar resultados
        Compartilhando e Atualizando projetos
        Examinando e comparando


              John Henrique Teixeira de Godoi   Git
Versionadores
                O quˆ? Por quˆ? Pra quˆ?
                    e        e        e
                                            Distribu´
                                                    ıdos
                            Rotina no git
                                            Git




Imagine vocˆ no desenvolvimento de um sistema com milhares de
           e
      arquivos, milh˜es de linhas de c´digos e centenas de
                    o                 o
                        desenvolvedores.

   Como organizar, compartilhar e sincronizar tudo o que for
                        produzido?




          John Henrique Teixeira de Godoi   Git
Versionadores
                O quˆ? Por quˆ? Pra quˆ?
                    e        e        e
                                            Distribu´
                                                    ıdos
                            Rotina no git
                                            Git




 Alguma vez vocˆ j´ quis que fazer Ctrl+Z em algum arquivo
               e a
          depois de ter desligado o computador?

J´ quis fazer alguma mudan¸a no seu c´digo e ter a garantia de
 a                        c           o
                      mantˆ-lo est´vel?
                          e       a




          John Henrique Teixeira de Godoi   Git
Versionadores
                    O quˆ? Por quˆ? Pra quˆ?
                        e        e        e
                                                Distribu´
                                                        ıdos
                                Rotina no git
                                                Git



Versionadores - O que s˜o? Para que servem? Por quˆ
                       a                          e
us´-los?
  a


  Versionadores s˜o sistemas que permitem o gerenciamento da
                  a
  manipula¸˜o de arquivos, n˜o apenas c´digos-fontes, de forma que
           ca                 a           o
  seja poss´ trabalhar com diversas c´pias, vers˜es, do mesmo em
           ıvel                         o         o
  momentos diferentes com a possibilidade de unific´-las,
                                                     a
  recuper´-las, compar´-las, sincroniz´-las, manter um hist´rico do
         a             a              a                     o
  que for desenvolvido e, ainda, pessoas diferentes trabalharem sobre
  o mesmo arquivo em paralelo.




              John Henrique Teixeira de Godoi   Git
Versionadores
                    O quˆ? Por quˆ? Pra quˆ?
                        e        e        e
                                                Distribu´
                                                        ıdos
                                Rotina no git
                                                Git



Sistemas de Versionamento Distribu´
                                  ıdos



  Diferentes de seus antecessores, que necessitavam de uma
  aplica¸˜o servidor que centraliza-se o gerencimento dos arquivos,
        ca
  os versionadores distribu´ıdos dispensam essa necessidade com
  c´pias independentes do mesmo c´digo que podem comunicar
   o                                  o
  entre si e se sincronizarem.
  Cada c´pia pode ser tratada com um backup de todo o sistema e
         o
  n˜o necessitam de conex˜o com a internet para que possam
   a                         a
  trabalhar de forma eficiente.




              John Henrique Teixeira de Godoi   Git
Versionadores
                   O quˆ? Por quˆ? Pra quˆ?
                       e        e        e
                                               Distribu´
                                                       ıdos
                               Rotina no git
                                               Git



Git



      Criado por Linus Torvalds em 2005.
      Nome vem de uma brincadeira com a g´ “git” e o Kernel
                                         ıria
      criado por Linus levar seu nome.
      Sistema de Versionamento Distribu´ com foco em seu
                                       ıdo
      desempenho.
      Desenvolvido voltado para o versionamento do kernel Linux
      que antes era versionado com software propriet´rio.
                                                    a




             John Henrique Teixeira de Godoi   Git
Versionadores
                   O quˆ? Por quˆ? Pra quˆ?
                       e        e        e
                                               Distribu´
                                                       ıdos
                               Rotina no git
                                               Git



Git - interface

      Os comandos do git s˜o passados como parˆmetros ap´s a
                          a                   a         o
      chamada deste na linha de comando.
                  git <comando><op¸˜es><parˆmetros>
                                      co        a
      Existem interface gr´ficas, e plugins para IDE’s, que facilitam
                           a
      o uso das funcionalidades do git sem ter que usar o terminal.
                    NetBeans: http://nbgit.org/
                    Eclipse: http://eclipse.org/egit/
      gitk e git-gui s˜o interfaces gr´ficas nativas.
                      a               a
      Para windows o tortoisegit ´ uma das melhores op¸˜es.
                                 e                    co
                  http://code.google.com/p/tortoisegit/


             John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                      o
                                              Desenvolvimento
                  O quˆ? Por quˆ? Pra quˆ?
                      e        e        e
                                              Dividir para Conquistar e Somar resultados
                              Rotina no git
                                              Compartilhando e Atualizando projetos
                                              Examinando e comparando


Rotina no git




      O uso dos comandos do git pode ser resumido em uma rotina
      di´ria que abragem as necessidades do cotidiano com um
        a
      versionador.




            John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                        o
                                                Desenvolvimento
                    O quˆ? Por quˆ? Pra quˆ?
                        e        e        e
                                                Dividir para Conquistar e Somar resultados
                                Rotina no git
                                                Compartilhando e Atualizando projetos
                                                Examinando e comparando


Rotina no git - cheatsheet




     Figure: http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html

              John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                      o
                                              Desenvolvimento
                  O quˆ? Por quˆ? Pra quˆ?
                      e        e        e
                                              Dividir para Conquistar e Somar resultados
                              Rotina no git
                                              Compartilhando e Atualizando projetos
                                              Examinando e comparando


Determinando territ´rio
                   o


      init(-db) <op¸˜es>
                   co
                   Atrav´s desse comando ´ inicializado um
                         e                e
                   reposit´rio git.
                           o
                   Uma op¸˜o bastante usada a –bare que permite
                            ca
                   a cria¸˜o de um reposit´rio sem qualquer
                         ca               o
                   configura¸˜o pr´via.
                             ca     e
      clone <Endere¸oReposit´rioRemoto>
                   c         o
                  Com este comando criasse uma c´pia de um
                                                    o
                  reposit´rio remoto para o diret´rio atual.
                         o                       o



            John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                       o
                                               Desenvolvimento
                   O quˆ? Por quˆ? Pra quˆ?
                       e        e        e
                                               Dividir para Conquistar e Somar resultados
                               Rotina no git
                                               Compartilhando e Atualizando projetos
                                               Examinando e comparando


Identifique-se




      config - -global <op¸˜es>
                          co
                   Insere suas informa¸˜es para identificar de forma
                                      co
                   natural sua modifica¸˜es no projeto.
                                       co
          user.name ’Seu nome’
          user.email seuemail@servidor.com




             John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                      o
                                              Desenvolvimento
                  O quˆ? Por quˆ? Pra quˆ?
                      e        e        e
                                              Dividir para Conquistar e Somar resultados
                              Rotina no git
                                              Compartilhando e Atualizando projetos
                                              Examinando e comparando


Selecionando
     add <Lista de arquivos>
                 Com esse comando vocˆ define quais arquivos
                                          e
                 dentro do diret´rio ser˜o versionados e
                                 o       a
                 rastreados pelo reposit´rio.
                                         o
                 Com . todos os arquivos, diret´rios e
                                                  o
                 sub-diret´rios, existentes, ser˜o adicionados.
                           o                    a
     rm <Lista de arquivos>
                 Remove do rastreamento do reposit´rio a lista
                                                       o
                 de arquivos.
     mv <fonte><destino>
                 O git n˜o rastreia renomea¸˜o de arquivos, e
                         a                    ca
                 esse comando ´ equivalente a (git rm –cached
                                 e
                 orig; mv orig new; git add new).
            John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                      o
                                              Desenvolvimento
                  O quˆ? Por quˆ? Pra quˆ?
                      e        e        e
                                              Dividir para Conquistar e Somar resultados
                              Rotina no git
                                              Compartilhando e Atualizando projetos
                                              Examinando e comparando


Como estamos?



     status <op¸˜es>
               co
                  Mostra o estado dos arquivos.

                      -s exibe um resumo do estado no diret´rio(??) e
                                                           o
                      no reposit´rio(A—M—D).
                                o

                      Adicionado, Modificado e Apagado(Deleted).




            John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                     o
                                             Desenvolvimento
                 O quˆ? Por quˆ? Pra quˆ?
                     e        e        e
                                             Dividir para Conquistar e Somar resultados
                             Rotina no git
                                             Compartilhando e Atualizando projetos
                                             Examinando e comparando


Registrando o momento


     commit <op¸˜es>
               co
                Registra as modifica¸˜es realizadas no
                                    co
                reposit´rio.
                       o
                -a adiciona as mudan¸as realizadas (git add) ao
                                      c
                reposit´rio.
                       o
                -m “descri¸˜o” permite colocar uma descri¸˜o
                           ca                             ca
                geral da mudan¸as realizadas naquele registro.
                                c
                Esses registros poderam ser comparados,
                revertidos e compartilhados posteriormente.




           John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                      o
                                              Desenvolvimento
                  O quˆ? Por quˆ? Pra quˆ?
                      e        e        e
                                              Dividir para Conquistar e Somar resultados
                              Rotina no git
                                              Compartilhando e Atualizando projetos
                                              Examinando e comparando


De volta do t´nel do tempo
             u
     diff
                  Mostra a diferen¸a, linha por linha, do que foi
                                    c
                  adicionado ou n˜o ao reposit´rio.
                                   a            o
                  - -cached apenas para o que foi adicionado
                  HEAD (registro especial que representa o estado
                  atual) diferen¸a entre HEAD e o ultimo registro.
                                 c                  ´
                  - -stats resumo das diferen¸as
                                             c
     reset <Registro>
                  troca o cont´udo HEAD pelo registro passado
                               e
                  como parˆmetro.
                             a
                  “Ctrl+Z” do git
                  - -hard Al´m do cont´udo do registro altera a
                             e          e
                  ´rvore de registro e descarta todo o resto (use
                  a
                  com modera¸˜o).
                               ca
            John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                     o
                                             Desenvolvimento
                 O quˆ? Por quˆ? Pra quˆ?
                     e        e        e
                                             Dividir para Conquistar e Somar resultados
                             Rotina no git
                                             Compartilhando e Atualizando projetos
                                             Examinando e comparando


Ramificando

     branch <op¸˜es><nome da ramifica¸˜o>
               co                        ca
                 sem passar nenhum parˆmetro, ele listar´ as
                                         a              a
                 ramifica¸˜es existentes
                         co
                 passando um nome, ele criar´ uma ramifica¸˜o a
                                             a             ca
                 partir da atual
                 -d permite excluir a ramifica¸˜o (Use com
                                             ca
                 modera¸˜o!).
                         ca
     checkout <op¸˜es><nome da ramifica¸˜o>
                 co                         ca
                 Altera qual a ramifica¸˜o est´ sendo trabalhada.
                                        ca      a
                 Obs.: Ele ir´ exigir o registro de poss´
                             a                          ıveis
                 modifica¸˜es antes de realizar a troca.
                          co
                 -b cria uma nova ramifica¸˜o e depois altera
                                             ca
                 para essa
           John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                      o
                                              Desenvolvimento
                  O quˆ? Por quˆ? Pra quˆ?
                      e        e        e
                                              Dividir para Conquistar e Somar resultados
                              Rotina no git
                                              Compartilhando e Atualizando projetos
                                              Examinando e comparando


Unindo


     merge <Lista de ramifica¸˜es>
                            co
                 Unifica as ramifica¸˜es passadas por parˆmetro
                                   co                    a
                 com a atual e os registros mais recentes ser˜o
                                                             a
                 combinados em um novo.

                           ...::*CONFLITOS*::...

     git merge - -abort
     use mergetool e diff a vontade, resolva os conflitos e proceda
     com o merge novamente.


            John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                      o
                                              Desenvolvimento
                  O quˆ? Por quˆ? Pra quˆ?
                      e        e        e
                                              Dividir para Conquistar e Somar resultados
                              Rotina no git
                                              Compartilhando e Atualizando projetos
                                              Examinando e comparando


Nos “registros” anteriores do projeto...

      log
                      exibe o hist´rico de registro da ramifica¸˜o
                                  o                           ca
                      atual. O que inclui indentificador, nome e e-mail
                      do usu´rio, data e hor´rio e descri¸˜o.
                             a               a           ca
                      - -oneline exibe apenas o identificador e a
                      descri¸˜o.
                            ca
                      - -graph mostra um grafo com o comportamento
                      dos registro (unifica¸˜es e ramifica¸˜es).
                                           co             co
      tag
                      permite criar um marco no hist´rico de forma
                                                      o
                      que se possa us´-lo para referenciar algum ponto
                                      a
                      no hist´rico.
                              o
                      git log - -decorate exibe os marcos tamb´m
                                                               e
            John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                         o
                                                 Desenvolvimento
                     O quˆ? Por quˆ? Pra quˆ?
                         e        e        e
                                                 Dividir para Conquistar e Somar resultados
                                 Rotina no git
                                                 Compartilhando e Atualizando projetos
                                                 Examinando e comparando


Vocˆ n˜o est´ sozinho!
   e a      a


      remote
                         sem parˆmetos mostra a lista de nomes dos
                                 a
                         reposit´rios remotos.
                                o
                         -v mostra, tamb´m, o endere¸o de cada
                                          e           c
                         reposit´rio para envio e busca de atualiza¸˜es.
                                o                                  co
                         add <nome><endere¸o>adiciona um novo
                                               c
                         reposit´rio com o nome e endere¸o passados por
                                o                         c
                         parˆmetro.
                            a
                         rm <nome>remove o reposit´rio com o nome
                                                       o
                         passado por parˆmetro
                                         a



               John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                     o
                                             Desenvolvimento
                 O quˆ? Por quˆ? Pra quˆ?
                     e        e        e
                                             Dividir para Conquistar e Somar resultados
                             Rotina no git
                                             Compartilhando e Atualizando projetos
                                             Examinando e comparando


Comunicando-se


     fetch <nome>
                faz o download das novas ramifica¸˜es e dados
                                                co
                do reposit´rio remoto.
                          o
     pull <nome>
                     al´m do download tenta unificar com a
                       e
                     ramifica¸˜o atual.
                            ca
     push <nome><ramifica¸˜o>
                           ca
                envia suas novas ramifica¸˜es e dados para um
                                        co
                reposit´rio remoto.
                       o



           John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                        o
                                                Desenvolvimento
                    O quˆ? Por quˆ? Pra quˆ?
                        e        e        e
                                                Dividir para Conquistar e Somar resultados
                                Rotina no git
                                                Compartilhando e Atualizando projetos
                                                Examinando e comparando


Pente fino
  Para filtrar o hist´rico gerado pelo “log” podemos usar alguns
                     o
  parˆmetros:
     a
       - -author=<autor>- -oneline -<quantidade>filtra o hist´rico  o
       pelo “autor” mostrando os registros, limitado a uma certa
       “quantidade”, feitos por este.
       - -since, - -before, - -until, - -after={ data} filtra por uma
       especifica “data”, desde, antes, at´ e depois desta,
                                              e
       respectivamente.
                       data pode ser escrita nas formas: 3.weeks.ago
                       ou 2011-10-4, por exemplo
       - -grep=<padr˜o>busca os registros que possuam o “padr˜o”
                        a                                            a
       em suas informa¸˜esco
       - -S<mudan¸a>procura no hist´rico onde foi inserida a
                     c                     o
       “mudan¸a” passada que pode ser uma fun¸˜o, por exemplo.
                c                                    ca
              John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                      o
                                              Desenvolvimento
                  O quˆ? Por quˆ? Pra quˆ?
                      e        e        e
                                              Dividir para Conquistar e Somar resultados
                              Rotina no git
                                              Compartilhando e Atualizando projetos
                                              Examinando e comparando


Pente fino


     merge-base <ramifica¸˜o1><ramifica¸˜o2>
                         ca              ca
                 encontro o registro em comum entre as
                 ramifica¸˜es passadas por parˆmetro
                        co                   a
     diff - -stat <ramifica¸˜o1><ramifica¸˜o2>
                          ca              ca
                   encontra o registro em comum e mostra quais
                   foram as mudan¸as.
                                   c
     blame <arquivo>
                 exibe o respons´vel por cada linha de c´digo.
                                a                       o




            John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                      o
                                              Desenvolvimento
                  O quˆ? Por quˆ? Pra quˆ?
                      e        e        e
                                              Dividir para Conquistar e Somar resultados
                              Rotina no git
                                              Compartilhando e Atualizando projetos
                                              Examinando e comparando


Colher de ch´
            a




     DiffMerge, Kdiff3 ou Meld – ferramentas gr´ficas para solu¸˜o
                                             a              ca
     de conflitos
     sudo apt-get install meld ; git config - -global merge.tool meld




            John Henrique Teixeira de Godoi   Git
Reposit´rio
                                                        o
                                                Desenvolvimento
                    O quˆ? Por quˆ? Pra quˆ?
                        e        e        e
                                                Dividir para Conquistar e Somar resultados
                                Rotina no git
                                                Compartilhando e Atualizando projetos
                                                Examinando e comparando


Referˆncias
     e



      gitref.org/
      git-scm.org
      zrusin.blogspot.com/2007/09/git-cheat-sheet.html
      andyjeffries.co.uk/articles/25-tips-for-intermediate-git-users
      pajeonline.blogspot.com/2010/12/versionando-seus-dados-
      boas-praticas-e.html




              John Henrique Teixeira de Godoi   Git

Weitere ähnliche Inhalte

Ähnlich wie Rotina no Git: Repositório, Desenvolvimento e Compartilhamento

Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - gitThiago Filadelfo
 
Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubGilson Junior
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!Vitor Silva
 
Iniciando com git
Iniciando com gitIniciando com git
Iniciando com gittechparty
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Controle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareControle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareGilmar Pupo
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJNathália Cruz de Oliveira
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJNathália Cruz de Oliveira
 
Git- O minimo que você deve saber para trabalhar com ele.pptx
Git- O minimo que você deve saber para trabalhar com ele.pptxGit- O minimo que você deve saber para trabalhar com ele.pptx
Git- O minimo que você deve saber para trabalhar com ele.pptxLuiz Fernando
 
Git e Sistemas de Controle de Versão
Git e Sistemas de Controle de VersãoGit e Sistemas de Controle de Versão
Git e Sistemas de Controle de VersãoJhonatan Henrique
 
Git github tortoise git
Git github tortoise gitGit github tortoise git
Git github tortoise gitmaxrosan
 

Ähnlich wie Rotina no Git: Repositório, Desenvolvimento e Compartilhamento (20)

Git básico
Git básicoGit básico
Git básico
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - git
 
Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHub
 
Palestra sobre Git EEDACT2015
Palestra sobre Git EEDACT2015Palestra sobre Git EEDACT2015
Palestra sobre Git EEDACT2015
 
Workshop - Git e GitHub
Workshop - Git e GitHubWorkshop - Git e GitHub
Workshop - Git e GitHub
 
Go git - Presentation @Navita
Go git - Presentation @NavitaGo git - Presentation @Navita
Go git - Presentation @Navita
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
 
GitHub para não programadores
GitHub para não programadoresGitHub para não programadores
GitHub para não programadores
 
Iniciando com git
Iniciando com gitIniciando com git
Iniciando com git
 
Iniciando com Git
Iniciando com GitIniciando com Git
Iniciando com Git
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Controle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareControle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de software
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
 
Git- O minimo que você deve saber para trabalhar com ele.pptx
Git- O minimo que você deve saber para trabalhar com ele.pptxGit- O minimo que você deve saber para trabalhar com ele.pptx
Git- O minimo que você deve saber para trabalhar com ele.pptx
 
Git e Sistemas de Controle de Versão
Git e Sistemas de Controle de VersãoGit e Sistemas de Controle de Versão
Git e Sistemas de Controle de Versão
 
Git github tortoise git
Git github tortoise gitGit github tortoise git
Git github tortoise git
 
Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
Git & GitHub for beginners
Git & GitHub for beginnersGit & GitHub for beginners
Git & GitHub for beginners
 

Mehr von PeslPinguim

Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalPeslPinguim
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalPeslPinguim
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalPeslPinguim
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalPeslPinguim
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacaoPeslPinguim
 
Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalPeslPinguim
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_PeslPinguim
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10PeslPinguim
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5PeslPinguim
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4PeslPinguim
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1PeslPinguim
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7PeslPinguim
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3PeslPinguim
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9PeslPinguim
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 PeslPinguim
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroPeslPinguim
 
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEBHTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEBPeslPinguim
 
Alarme Automatico - Eletrônica Aplicada - Aula 2
Alarme Automatico - Eletrônica Aplicada - Aula 2Alarme Automatico - Eletrônica Aplicada - Aula 2
Alarme Automatico - Eletrônica Aplicada - Aula 2PeslPinguim
 

Mehr von PeslPinguim (20)

Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão Digital
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão Digital
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão Digital
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão Digital
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacao
 
Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão Digital
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoro
 
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEBHTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
HTML5 - UM GUIA DE REFERÊNCIA PARA DESENVOLVEDORES WEB
 
Alarme Automatico - Eletrônica Aplicada - Aula 2
Alarme Automatico - Eletrônica Aplicada - Aula 2Alarme Automatico - Eletrônica Aplicada - Aula 2
Alarme Automatico - Eletrônica Aplicada - Aula 2
 

Rotina no Git: Repositório, Desenvolvimento e Compartilhamento

  • 1. Git John Henrique Teixeira de Godoi Instituto de Ciˆncias e Tecnologia e Universidade Federal de S˜o Paulo a S˜o Jos´ dos Campos – SP, Brasil a e Outubro, 2011 Programa de Educa¸˜o em Software Livre - PESL ca
  • 2. O quˆ? Por quˆ? Pra quˆ? e e e Rotina no git Avisos! Esses slides s˜o baseados principalmente no GitReference. a Algumas tradu¸˜es podem n˜o ser fi´is mas se adequavam co a e melhor ao contesto. Al´m do cont´udo desses slides tem a parte pr´tica que ser´ e e a a exibida durante a apresenta¸˜o. ca John Henrique Teixeira de Godoi Git
  • 3. O quˆ? Por quˆ? Pra quˆ? e e e Rotina no git Indice 1 O quˆ? Por quˆ? Pra quˆ? e e e Versionadores Distribu´ ıdos Git John Henrique Teixeira de Godoi Git
  • 4. O quˆ? Por quˆ? Pra quˆ? e e e Rotina no git Indice 1 O quˆ? Por quˆ? Pra quˆ? e e e Versionadores Distribu´ ıdos Git 2 Rotina no git Reposit´rio o Desenvolvimento Dividir para Conquistar e Somar resultados Compartilhando e Atualizando projetos Examinando e comparando John Henrique Teixeira de Godoi Git
  • 5. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git Git Imagine vocˆ no desenvolvimento de um sistema com milhares de e arquivos, milh˜es de linhas de c´digos e centenas de o o desenvolvedores. Como organizar, compartilhar e sincronizar tudo o que for produzido? John Henrique Teixeira de Godoi Git
  • 6. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git Git Alguma vez vocˆ j´ quis que fazer Ctrl+Z em algum arquivo e a depois de ter desligado o computador? J´ quis fazer alguma mudan¸a no seu c´digo e ter a garantia de a c o mantˆ-lo est´vel? e a John Henrique Teixeira de Godoi Git
  • 7. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git Git Versionadores - O que s˜o? Para que servem? Por quˆ a e us´-los? a Versionadores s˜o sistemas que permitem o gerenciamento da a manipula¸˜o de arquivos, n˜o apenas c´digos-fontes, de forma que ca a o seja poss´ trabalhar com diversas c´pias, vers˜es, do mesmo em ıvel o o momentos diferentes com a possibilidade de unific´-las, a recuper´-las, compar´-las, sincroniz´-las, manter um hist´rico do a a a o que for desenvolvido e, ainda, pessoas diferentes trabalharem sobre o mesmo arquivo em paralelo. John Henrique Teixeira de Godoi Git
  • 8. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git Git Sistemas de Versionamento Distribu´ ıdos Diferentes de seus antecessores, que necessitavam de uma aplica¸˜o servidor que centraliza-se o gerencimento dos arquivos, ca os versionadores distribu´ıdos dispensam essa necessidade com c´pias independentes do mesmo c´digo que podem comunicar o o entre si e se sincronizarem. Cada c´pia pode ser tratada com um backup de todo o sistema e o n˜o necessitam de conex˜o com a internet para que possam a a trabalhar de forma eficiente. John Henrique Teixeira de Godoi Git
  • 9. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git Git Git Criado por Linus Torvalds em 2005. Nome vem de uma brincadeira com a g´ “git” e o Kernel ıria criado por Linus levar seu nome. Sistema de Versionamento Distribu´ com foco em seu ıdo desempenho. Desenvolvido voltado para o versionamento do kernel Linux que antes era versionado com software propriet´rio. a John Henrique Teixeira de Godoi Git
  • 10. Versionadores O quˆ? Por quˆ? Pra quˆ? e e e Distribu´ ıdos Rotina no git Git Git - interface Os comandos do git s˜o passados como parˆmetros ap´s a a a o chamada deste na linha de comando. git <comando><op¸˜es><parˆmetros> co a Existem interface gr´ficas, e plugins para IDE’s, que facilitam a o uso das funcionalidades do git sem ter que usar o terminal. NetBeans: http://nbgit.org/ Eclipse: http://eclipse.org/egit/ gitk e git-gui s˜o interfaces gr´ficas nativas. a a Para windows o tortoisegit ´ uma das melhores op¸˜es. e co http://code.google.com/p/tortoisegit/ John Henrique Teixeira de Godoi Git
  • 11. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Rotina no git O uso dos comandos do git pode ser resumido em uma rotina di´ria que abragem as necessidades do cotidiano com um a versionador. John Henrique Teixeira de Godoi Git
  • 12. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Rotina no git - cheatsheet Figure: http://zrusin.blogspot.com/2007/09/git-cheat-sheet.html John Henrique Teixeira de Godoi Git
  • 13. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Determinando territ´rio o init(-db) <op¸˜es> co Atrav´s desse comando ´ inicializado um e e reposit´rio git. o Uma op¸˜o bastante usada a –bare que permite ca a cria¸˜o de um reposit´rio sem qualquer ca o configura¸˜o pr´via. ca e clone <Endere¸oReposit´rioRemoto> c o Com este comando criasse uma c´pia de um o reposit´rio remoto para o diret´rio atual. o o John Henrique Teixeira de Godoi Git
  • 14. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Identifique-se config - -global <op¸˜es> co Insere suas informa¸˜es para identificar de forma co natural sua modifica¸˜es no projeto. co user.name ’Seu nome’ user.email seuemail@servidor.com John Henrique Teixeira de Godoi Git
  • 15. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Selecionando add <Lista de arquivos> Com esse comando vocˆ define quais arquivos e dentro do diret´rio ser˜o versionados e o a rastreados pelo reposit´rio. o Com . todos os arquivos, diret´rios e o sub-diret´rios, existentes, ser˜o adicionados. o a rm <Lista de arquivos> Remove do rastreamento do reposit´rio a lista o de arquivos. mv <fonte><destino> O git n˜o rastreia renomea¸˜o de arquivos, e a ca esse comando ´ equivalente a (git rm –cached e orig; mv orig new; git add new). John Henrique Teixeira de Godoi Git
  • 16. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Como estamos? status <op¸˜es> co Mostra o estado dos arquivos. -s exibe um resumo do estado no diret´rio(??) e o no reposit´rio(A—M—D). o Adicionado, Modificado e Apagado(Deleted). John Henrique Teixeira de Godoi Git
  • 17. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Registrando o momento commit <op¸˜es> co Registra as modifica¸˜es realizadas no co reposit´rio. o -a adiciona as mudan¸as realizadas (git add) ao c reposit´rio. o -m “descri¸˜o” permite colocar uma descri¸˜o ca ca geral da mudan¸as realizadas naquele registro. c Esses registros poderam ser comparados, revertidos e compartilhados posteriormente. John Henrique Teixeira de Godoi Git
  • 18. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando De volta do t´nel do tempo u diff Mostra a diferen¸a, linha por linha, do que foi c adicionado ou n˜o ao reposit´rio. a o - -cached apenas para o que foi adicionado HEAD (registro especial que representa o estado atual) diferen¸a entre HEAD e o ultimo registro. c ´ - -stats resumo das diferen¸as c reset <Registro> troca o cont´udo HEAD pelo registro passado e como parˆmetro. a “Ctrl+Z” do git - -hard Al´m do cont´udo do registro altera a e e ´rvore de registro e descarta todo o resto (use a com modera¸˜o). ca John Henrique Teixeira de Godoi Git
  • 19. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Ramificando branch <op¸˜es><nome da ramifica¸˜o> co ca sem passar nenhum parˆmetro, ele listar´ as a a ramifica¸˜es existentes co passando um nome, ele criar´ uma ramifica¸˜o a a ca partir da atual -d permite excluir a ramifica¸˜o (Use com ca modera¸˜o!). ca checkout <op¸˜es><nome da ramifica¸˜o> co ca Altera qual a ramifica¸˜o est´ sendo trabalhada. ca a Obs.: Ele ir´ exigir o registro de poss´ a ıveis modifica¸˜es antes de realizar a troca. co -b cria uma nova ramifica¸˜o e depois altera ca para essa John Henrique Teixeira de Godoi Git
  • 20. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Unindo merge <Lista de ramifica¸˜es> co Unifica as ramifica¸˜es passadas por parˆmetro co a com a atual e os registros mais recentes ser˜o a combinados em um novo. ...::*CONFLITOS*::... git merge - -abort use mergetool e diff a vontade, resolva os conflitos e proceda com o merge novamente. John Henrique Teixeira de Godoi Git
  • 21. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Nos “registros” anteriores do projeto... log exibe o hist´rico de registro da ramifica¸˜o o ca atual. O que inclui indentificador, nome e e-mail do usu´rio, data e hor´rio e descri¸˜o. a a ca - -oneline exibe apenas o identificador e a descri¸˜o. ca - -graph mostra um grafo com o comportamento dos registro (unifica¸˜es e ramifica¸˜es). co co tag permite criar um marco no hist´rico de forma o que se possa us´-lo para referenciar algum ponto a no hist´rico. o git log - -decorate exibe os marcos tamb´m e John Henrique Teixeira de Godoi Git
  • 22. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Vocˆ n˜o est´ sozinho! e a a remote sem parˆmetos mostra a lista de nomes dos a reposit´rios remotos. o -v mostra, tamb´m, o endere¸o de cada e c reposit´rio para envio e busca de atualiza¸˜es. o co add <nome><endere¸o>adiciona um novo c reposit´rio com o nome e endere¸o passados por o c parˆmetro. a rm <nome>remove o reposit´rio com o nome o passado por parˆmetro a John Henrique Teixeira de Godoi Git
  • 23. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Comunicando-se fetch <nome> faz o download das novas ramifica¸˜es e dados co do reposit´rio remoto. o pull <nome> al´m do download tenta unificar com a e ramifica¸˜o atual. ca push <nome><ramifica¸˜o> ca envia suas novas ramifica¸˜es e dados para um co reposit´rio remoto. o John Henrique Teixeira de Godoi Git
  • 24. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Pente fino Para filtrar o hist´rico gerado pelo “log” podemos usar alguns o parˆmetros: a - -author=<autor>- -oneline -<quantidade>filtra o hist´rico o pelo “autor” mostrando os registros, limitado a uma certa “quantidade”, feitos por este. - -since, - -before, - -until, - -after={ data} filtra por uma especifica “data”, desde, antes, at´ e depois desta, e respectivamente. data pode ser escrita nas formas: 3.weeks.ago ou 2011-10-4, por exemplo - -grep=<padr˜o>busca os registros que possuam o “padr˜o” a a em suas informa¸˜esco - -S<mudan¸a>procura no hist´rico onde foi inserida a c o “mudan¸a” passada que pode ser uma fun¸˜o, por exemplo. c ca John Henrique Teixeira de Godoi Git
  • 25. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Pente fino merge-base <ramifica¸˜o1><ramifica¸˜o2> ca ca encontro o registro em comum entre as ramifica¸˜es passadas por parˆmetro co a diff - -stat <ramifica¸˜o1><ramifica¸˜o2> ca ca encontra o registro em comum e mostra quais foram as mudan¸as. c blame <arquivo> exibe o respons´vel por cada linha de c´digo. a o John Henrique Teixeira de Godoi Git
  • 26. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Colher de ch´ a DiffMerge, Kdiff3 ou Meld – ferramentas gr´ficas para solu¸˜o a ca de conflitos sudo apt-get install meld ; git config - -global merge.tool meld John Henrique Teixeira de Godoi Git
  • 27. Reposit´rio o Desenvolvimento O quˆ? Por quˆ? Pra quˆ? e e e Dividir para Conquistar e Somar resultados Rotina no git Compartilhando e Atualizando projetos Examinando e comparando Referˆncias e gitref.org/ git-scm.org zrusin.blogspot.com/2007/09/git-cheat-sheet.html andyjeffries.co.uk/articles/25-tips-for-intermediate-git-users pajeonline.blogspot.com/2010/12/versionando-seus-dados- boas-praticas-e.html John Henrique Teixeira de Godoi Git