SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PDF
Minicurso Git Semcomp Beta
PPTX
Trabalhando imagens com o gimp
PPTX
Aula 4 redes Inclusão Digital
PDF
Gimp para Iniciantes 1
PDF
Trabalho final gimp
PPTX
Trabalho Final de Photoshop
PDF
O GIMP COMO FERRAMENTA NO AUXÍLIO DA INCLUSÃO DIGITAL PARA O PÚBLICO DA TERCE...
PDF
Introdução ao Arduino
Minicurso Git Semcomp Beta
Trabalhando imagens com o gimp
Aula 4 redes Inclusão Digital
Gimp para Iniciantes 1
Trabalho final gimp
Trabalho Final de Photoshop
O GIMP COMO FERRAMENTA NO AUXÍLIO DA INCLUSÃO DIGITAL PARA O PÚBLICO DA TERCE...
Introdução ao Arduino

Semelhante a Git (20)

PDF
Git básico
PPSX
Git e boas praticas!
PDF
Controle de versão com Git
PDF
Apresentação de Git
PDF
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
PDF
Mini-curso de git -- SECOMP-UFS
PPTX
Conhecendo o git.
PPTX
Ferramentas para versionamento Utilizando git
PDF
Workshop sistema de versionamento de código - git
PPTX
Introdução ao git
PPT
Git e GitHub - Conceitos Básicos
PDF
Git e a importância de versionar um projeto
PPTX
Git e github
ODP
Introdução ao git
PDF
Introducao ao Git
PDF
Git that like a boss - Dos comandos básicos aos branches.
PPTX
Gerenciando projetos com Git e GitHub
PPTX
Gestão de Projetos: Introduçaõ ao Git e controle de versões
PPTX
Controle de Versões com Git + Github
PDF
Controle de Versões com Git
Git básico
Git e boas praticas!
Controle de versão com Git
Apresentação de Git
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Mini-curso de git -- SECOMP-UFS
Conhecendo o git.
Ferramentas para versionamento Utilizando git
Workshop sistema de versionamento de código - git
Introdução ao git
Git e GitHub - Conceitos Básicos
Git e a importância de versionar um projeto
Git e github
Introdução ao git
Introducao ao Git
Git that like a boss - Dos comandos básicos aos branches.
Gerenciando projetos com Git e GitHub
Gestão de Projetos: Introduçaõ ao Git e controle de versões
Controle de Versões com Git + Github
Controle de Versões com Git
Anúncio

Mais de PeslPinguim (20)

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

Último (8)

PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Mecânico de Manutenção de Equipamentos.pptx
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Mecânico de Manutenção de Equipamentos.pptx
Manejo integrado de pragas na cultura do algodão
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Viasol Energia Solar -Soluções para geração e economia de energia
Arquitetura de computadores - Memórias Secundárias
Termos utilizados na designação de relação entre pessoa e uma obra.pdf

Git

  • 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