SlideShare a Scribd company logo
1 of 40
Git a partir do SVN

              Michael Schuenck dos Santos
                   http://twitter.com/michaelss
                http://delicious.com/michaelss
Introdução
• Desenvolvimento sem versionamento:
    • Dificuldade para integrar os trabalhos da equipe
        • Alguém imagina como integrar?
     • Perda de trabalho com as integrações
        • Atrasos
     • Sistemas com falhas
        • Exemplo: diferentes linhas alteradas em um arquivo por
          diferentes membros.
     • Impossibilidade de retornar o código a um estado
       anterior
     • Risco de perda pela inexistência de backup
        • Especialmente quando o projeto é desenvolvido por uma só
          pessoa
Ferramentas

•   CVS
•   SVN (Subversion)
•   Mercurial
•   Git
•   MS Visual SourceSafe
•   Rational ClearCase
SVN

• Modelo centralizado
    • Um servidor
    • Um ou mais desenvolvedores
• Considerado uma evolução do CVS.
SVN - Principais Operações

• Checkout: baixar a versão atual para a máquina.
• Update: recuperar as alterações feitas pelos demais membros
  da equipe.
      • Pode ser preciso resolver conflitos.
      • Princípio: o código no servidor não pode estar com problemas - eles
        precisam ser resolvidos localmente.
• Commit: envio das alterações locais para o servidor.
      • É esta operação que determina que uma nova versão foi criada.
• Tag: cópia de um projeto de forma que possa servir como
  baseline.
• Branch: ramificação de um projeto.
      • Usado normalmente quando serão feitas modificações de grande
        impacto.
SVN - Exemplo de Histórico
Git

• Primeira versão desenvolvida em 2005 por Linus Torvalds para
  auxiliar nas tarefas de desenvolvimento do kernel do Linux.
      • Atualmente é mantido por Junio Hamano.

• Modelo descentralizado
      • Qualquer estação pode ser servidor e cliente.
      • Possível manter um projeto local versionado.

• Metadados ficam no diretório .git, na raiz do projeto.
Git - Principais Operações

•   Init: inicia um repositório.
•   Add: adiciona diretórios e arquivos ao controle de versões.
•   Commit: submete as alterações locais ao controle de versões.
•   Branch: cria (ou apaga) um nova ramificação no código.
•   Checkout: muda de branch.
       • Todas as alterações no branch anterior serão mantidas se o usuário
         retornar a ele depois.
• Merge: une dois branchs pela aplicação das alterações de um
  no outro.
Git - Principais Operações

•   Init: inicia um repositório.
•   Add: adiciona diretórios e arquivos ao controle de versões.
•   Commit: submete as alterações locais ao controle de versões.
•   Branch: cria (ou apaga) um nova ramificação no código.
•   Checkout: muda de branch.
       • Todas as alterações no branch anterior serão mantidas se o usuário
         retornar a ele depois.
• Merge: une dois branchs pela aplicação das alterações de um
  no outro.




         Todas estas operações podem ser locais. No SVN, apenas a
         criação do repositório deve ser feita na máquina que será o
         servidor de versionamento.
Git - Configuração básica

 • Config: define a configuração básica da instalação.
       • Criará um arquivo ~/.gitconfig


# git config --global user.name “Michael Schuenck”
# git config --global user.email “michael@tre-to.jus.br”
Git - Obtendo um repositório

• Init: inicia um novo repositório a partir de um diretório existente.
      • Ele irá criar um diretório .git

                 # git init


• Clone: obtém uma cópia de um repositório existente.
      • Sobre os protocolos http(s), ssh e git.
      • O comando abaixo resultará na criação de um diretório local chamado
        proj.



# git clone ssh://sesawserver/sesawgit/proj.git
Git - Utilitários

• Status: utilizado para verificar o que foi alterado.
      • Arquivos alterados, adicionados e excluídos.

                        # git status

• Log: apresenta o histórico de commits no projeto.
      • Inúmeras opções de visualização do histórico.
          •   Completo
          •   De uma versão específica
          •   Em um ou mais branches




                        # git log
Git - Fluxo de trabalho

• Add: adiciona conteúdos de arquivos a uma área temporária
  para posterior commit.
     • Obrigatório quando os arquivos são novos.
         •   Desnecessário se for utilizada a opção -a no commit.



        # git add arquivo1 arquivo2 arquivo3


• Commit: grava uma nova versão (local) do projeto.
     • Snapshot do projeto.
     • Opção -m: permite especificar a mensagem diretamente.
     • Opção -a: permite adicionar alterações automaticamente (exceto
       quando forem adicionados novos arquivos).


    # git commit -a -m “Implementado o login.”
Git - Branches e Merges

• Branch: Cria um novo branch (linha de trabalho) ou consulta o
  branch atual.
     • Não muda para o branch automaticamente.

        # git branch nome_do_branch
        # git branch

• Checkout: muda de branch.
     • Mudanças em um branch não interferem em outro.


        # git checkout nome_do_branch
Git - Branches e Merges
• Merge: aplica mudanças de um branch em outro.
     • Podem ocorrer conflitos.
        •   Mudanças feitas nos dois branches.
     • As mudanças no branch informado serão aplicadas no branch atual.

        # git merge nome_do_outro_branch

• Branch (de novo, mas para apagar branches):
     • Para apagar um branch que foi incorporado a outro (com o merge),
       deve-se utilizar a opção “-d”.
     • Para apagar um branch cujas mudanças não serão aproveitadas,
       deve-se utilizar a opção “-D”.


        # git branch -d nome_do_branch
        # git branch -D branch_inútil
Git - Quando ocorrem conflitos
• Conflito ocorre quando a mesma linha de um mesmo arquivo é
  alterada em dois branches diferentes.
      • Podem ser mais de uma linha.
• Forma de um arquivo com conflito:

   <<<<<<< HEAD:file.txt
   Hello world
   =======
   Goodbye
   >>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt



• Para resolver, basta editar o arquivo mantendo a parte que será
  mantida e realizar o commit.
Git - Integrando remotamente
• Remote: lista, adiciona e remove apelidos (aliases) de
  repositórios remotos.
      • Facilidade ao se trabalhar com mais de um repositório.
      • Por projeto.
      • Listar e listar com detalhes:

                      # git remote
                      # git remote -v

      • Adicionar:

 # git remote add apelido ssh://server/dir/proj.git


      • Remover:

                # git remote rm apelido
Git - Repositório público
• Geralmente ficará remoto.
• Opção --bare para os comandos clone e init
     • Convenção: o nome do diretório será o nome do projeto seguido de
       “.git”


         # mkdir proj.git
         # cd proj.git
         # git --bare init
         ou
         # git clone --bare ~/proj proj.git
Git - Integrando remotamente - cont.
• Fetch: recupera as mudanças enviadas para o servidor remoto
  por outras pessoas.
     • Para aplicar as mudanças remotas, é necessário executar o comando
       merge.


     # git fetch apelido_remoto
     # git merge apelido_remoto/branch_remoto

• Pull: basicamente faz o mesmo que um fetch seguido de merge.


         # git pull apelido_remoto branch
Git - Integrando remotamente - cont.
• Push: envia os commits locais para o servidor remoto.
     • Não é possível executar este comando se alguém o executou no
       meio-tempo.
     • Tal como no SVN, será necessário “atualizar” a versão local.



           # git push apelido_remoto branch
Git - Exercício Local
Git - Exercício Local
1. Criar projeto e iniciá-lo
Git - Exercício Local
1. Criar projeto e iniciá-lo
2. Incluir arquivos e verificar o status
Git - Exercício Local
1. Criar projeto e iniciá-lo
2. Incluir arquivos e verificar o status
3. Adicionar os arquivos criados e realizar commit
Git - Exercício Local
1. Criar projeto e iniciá-lo
2. Incluir arquivos e verificar o status
3. Adicionar os arquivos criados e realizar commit
4. Criar um branch e ir para ele
Git - Exercício Local
1. Criar projeto e iniciá-lo
2. Incluir arquivos e verificar o status
3. Adicionar os arquivos criados e realizar commit
4. Criar um branch e ir para ele
5. Adicionar arquivos e realizar commit no novo branch
Git - Exercício Local
1. Criar projeto e iniciá-lo
2. Incluir arquivos e verificar o status
3. Adicionar os arquivos criados e realizar commit
4. Criar um branch e ir para ele
5. Adicionar arquivos e realizar commit no novo branch
6. Voltar para o branch master e ver os arquivos
Git - Exercício Local
1. Criar projeto e iniciá-lo
2. Incluir arquivos e verificar o status
3. Adicionar os arquivos criados e realizar commit
4. Criar um branch e ir para ele
5. Adicionar arquivos e realizar commit no novo branch
6. Voltar para o branch master e ver os arquivos
7. Aplicar as mudanças do novo branch no branch master
Git - Exercício Remoto
Git - Exercício Remoto
1. [servidor] Criar projeto vazio
Git - Exercício Remoto
1. [servidor] Criar projeto vazio
2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)
Git - Exercício Remoto
1. [servidor] Criar projeto vazio
2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)
3. [cliente1] Criar um apelido para o servidor
Git - Exercício Remoto
1. [servidor] Criar projeto vazio
2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)
3. [cliente1] Criar um apelido para o servidor
4. [cliente2] Baixar os arquivos do servidor
Git - Exercício Remoto
1. [servidor] Criar projeto vazio
2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)
3. [cliente1] Criar um apelido para o servidor
4. [cliente2] Baixar os arquivos do servidor
5. [cliente2] Fazer mudanças, commit e enviar p/ servidor
Git - Exercício Remoto
1. [servidor] Criar projeto vazio
2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)
3. [cliente1] Criar um apelido para o servidor
4. [cliente2] Baixar os arquivos do servidor
5. [cliente2] Fazer mudanças, commit e enviar p/ servidor
6. [cliente1] Fazer mudanças, commit e enviar p/ servidor
Git - Exercício Remoto
1. [servidor] Criar projeto vazio
2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)
3. [cliente1] Criar um apelido para o servidor
4. [cliente2] Baixar os arquivos do servidor
5. [cliente2] Fazer mudanças, commit e enviar p/ servidor
6. [cliente1] Fazer mudanças, commit e enviar p/ servidor
7. [cliente1] Criar branch, entrar nele, fazer mudanças, dar commit
   e enviar para servidor
Git - Exercício Remoto
1. [servidor] Criar projeto vazio
2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)
3. [cliente1] Criar um apelido para o servidor
4. [cliente2] Baixar os arquivos do servidor
5. [cliente2] Fazer mudanças, commit e enviar p/ servidor
6. [cliente1] Fazer mudanças, commit e enviar p/ servidor
7. [cliente1] Criar branch, entrar nele, fazer mudanças, dar commit
   e enviar para servidor
8. [cliente2] Baixar as mudanças feitas do servidor
Git - Referências
Git - Referências
• http://gitref.org
Git - Referências
• http://gitref.org
• http://book.git-scm.com

More Related Content

What's hot

Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonAlysson Ajackson
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Victor Souza
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucketMarcio Barbosa
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantesMario Ernesto
 
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowControle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowLucas Araújo Mezêncio
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilTiago Antônio da Silva
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoFelipe
 
Git - GitHub
Git - GitHubGit - GitHub
Git - GitHubWagner
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta gitDiogo Souza Machado
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDevHélio Medeiros
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errarBruno Calheira
 

What's hot (20)

Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson Ajackson
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucket
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantes
 
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowControle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
 
Git
GitGit
Git
 
Git e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código FácilGit e GitHub: Versionamento de Código Fácil
Git e GitHub: Versionamento de Código Fácil
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de código
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Git - GitHub
Git - GitHubGit - GitHub
Git - GitHub
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Introducao ao Git
Introducao ao GitIntroducao ao Git
Introducao ao Git
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Gerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHubGerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHub
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 

Viewers also liked

Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Thiago Barros, PSM
 
Sistema de Controle de Versão - CVS, SVN e GIT
Sistema de Controle de Versão - CVS, SVN e GITSistema de Controle de Versão - CVS, SVN e GIT
Sistema de Controle de Versão - CVS, SVN e GITGabriel Rubens
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With SubversionSamnang Chhun
 

Viewers also liked (6)

Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
 
Svn e processos de controle de código
Svn e processos de controle de códigoSvn e processos de controle de código
Svn e processos de controle de código
 
Sistema de Controle de Versão - CVS, SVN e GIT
Sistema de Controle de Versão - CVS, SVN e GITSistema de Controle de Versão - CVS, SVN e GIT
Sistema de Controle de Versão - CVS, SVN e GIT
 
Introduce to SVN
Introduce to SVNIntroduce to SVN
Introduce to SVN
 
Git vs. SVN
Git vs. SVNGit vs. SVN
Git vs. SVN
 
Version Control With Subversion
Version Control With SubversionVersion Control With Subversion
Version Control With Subversion
 

Similar to Git para quem vem do SVN

Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET ComputaçãoBruno Orlandi
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoFabricio Nogueira
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao gitDiogo Gomes
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!Vitor Silva
 
Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitC. Augusto Proiete
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteComunidade NetPonto
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVNLuciano Lima
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Tchelinux
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Danilo Pinotti
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesLeandro Cavalcante
 

Similar to Git para quem vem do SVN (20)

Oficina de Git EEDACT2015
Oficina de Git EEDACT2015Oficina de Git EEDACT2015
Oficina de Git EEDACT2015
 
GIT - Hands-On
GIT - Hands-On GIT - Hands-On
GIT - Hands-On
 
Git e github
Git e githubGit e github
Git e github
 
Git 101
Git 101Git 101
Git 101
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básico
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Primeiros passos - GIT
Primeiros passos - GITPrimeiros passos - GIT
Primeiros passos - GIT
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!
 
Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com Git
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto Proiete
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVN
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Git
GitGit
Git
 
Git
GitGit
Git
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de Versões
 
Curso git-0001
Curso git-0001Curso git-0001
Curso git-0001
 
Introdução ao git e github
Introdução ao git e githubIntrodução ao git e github
Introdução ao git e github
 

Git para quem vem do SVN

  • 1. Git a partir do SVN Michael Schuenck dos Santos http://twitter.com/michaelss http://delicious.com/michaelss
  • 2. Introdução • Desenvolvimento sem versionamento: • Dificuldade para integrar os trabalhos da equipe • Alguém imagina como integrar? • Perda de trabalho com as integrações • Atrasos • Sistemas com falhas • Exemplo: diferentes linhas alteradas em um arquivo por diferentes membros. • Impossibilidade de retornar o código a um estado anterior • Risco de perda pela inexistência de backup • Especialmente quando o projeto é desenvolvido por uma só pessoa
  • 3. Ferramentas • CVS • SVN (Subversion) • Mercurial • Git • MS Visual SourceSafe • Rational ClearCase
  • 4. SVN • Modelo centralizado • Um servidor • Um ou mais desenvolvedores • Considerado uma evolução do CVS.
  • 5. SVN - Principais Operações • Checkout: baixar a versão atual para a máquina. • Update: recuperar as alterações feitas pelos demais membros da equipe. • Pode ser preciso resolver conflitos. • Princípio: o código no servidor não pode estar com problemas - eles precisam ser resolvidos localmente. • Commit: envio das alterações locais para o servidor. • É esta operação que determina que uma nova versão foi criada. • Tag: cópia de um projeto de forma que possa servir como baseline. • Branch: ramificação de um projeto. • Usado normalmente quando serão feitas modificações de grande impacto.
  • 6. SVN - Exemplo de Histórico
  • 7. Git • Primeira versão desenvolvida em 2005 por Linus Torvalds para auxiliar nas tarefas de desenvolvimento do kernel do Linux. • Atualmente é mantido por Junio Hamano. • Modelo descentralizado • Qualquer estação pode ser servidor e cliente. • Possível manter um projeto local versionado. • Metadados ficam no diretório .git, na raiz do projeto.
  • 8. Git - Principais Operações • Init: inicia um repositório. • Add: adiciona diretórios e arquivos ao controle de versões. • Commit: submete as alterações locais ao controle de versões. • Branch: cria (ou apaga) um nova ramificação no código. • Checkout: muda de branch. • Todas as alterações no branch anterior serão mantidas se o usuário retornar a ele depois. • Merge: une dois branchs pela aplicação das alterações de um no outro.
  • 9. Git - Principais Operações • Init: inicia um repositório. • Add: adiciona diretórios e arquivos ao controle de versões. • Commit: submete as alterações locais ao controle de versões. • Branch: cria (ou apaga) um nova ramificação no código. • Checkout: muda de branch. • Todas as alterações no branch anterior serão mantidas se o usuário retornar a ele depois. • Merge: une dois branchs pela aplicação das alterações de um no outro. Todas estas operações podem ser locais. No SVN, apenas a criação do repositório deve ser feita na máquina que será o servidor de versionamento.
  • 10. Git - Configuração básica • Config: define a configuração básica da instalação. • Criará um arquivo ~/.gitconfig # git config --global user.name “Michael Schuenck” # git config --global user.email “michael@tre-to.jus.br”
  • 11. Git - Obtendo um repositório • Init: inicia um novo repositório a partir de um diretório existente. • Ele irá criar um diretório .git # git init • Clone: obtém uma cópia de um repositório existente. • Sobre os protocolos http(s), ssh e git. • O comando abaixo resultará na criação de um diretório local chamado proj. # git clone ssh://sesawserver/sesawgit/proj.git
  • 12. Git - Utilitários • Status: utilizado para verificar o que foi alterado. • Arquivos alterados, adicionados e excluídos. # git status • Log: apresenta o histórico de commits no projeto. • Inúmeras opções de visualização do histórico. • Completo • De uma versão específica • Em um ou mais branches # git log
  • 13. Git - Fluxo de trabalho • Add: adiciona conteúdos de arquivos a uma área temporária para posterior commit. • Obrigatório quando os arquivos são novos. • Desnecessário se for utilizada a opção -a no commit. # git add arquivo1 arquivo2 arquivo3 • Commit: grava uma nova versão (local) do projeto. • Snapshot do projeto. • Opção -m: permite especificar a mensagem diretamente. • Opção -a: permite adicionar alterações automaticamente (exceto quando forem adicionados novos arquivos). # git commit -a -m “Implementado o login.”
  • 14. Git - Branches e Merges • Branch: Cria um novo branch (linha de trabalho) ou consulta o branch atual. • Não muda para o branch automaticamente. # git branch nome_do_branch # git branch • Checkout: muda de branch. • Mudanças em um branch não interferem em outro. # git checkout nome_do_branch
  • 15. Git - Branches e Merges • Merge: aplica mudanças de um branch em outro. • Podem ocorrer conflitos. • Mudanças feitas nos dois branches. • As mudanças no branch informado serão aplicadas no branch atual. # git merge nome_do_outro_branch • Branch (de novo, mas para apagar branches): • Para apagar um branch que foi incorporado a outro (com o merge), deve-se utilizar a opção “-d”. • Para apagar um branch cujas mudanças não serão aproveitadas, deve-se utilizar a opção “-D”. # git branch -d nome_do_branch # git branch -D branch_inútil
  • 16. Git - Quando ocorrem conflitos • Conflito ocorre quando a mesma linha de um mesmo arquivo é alterada em dois branches diferentes. • Podem ser mais de uma linha. • Forma de um arquivo com conflito: <<<<<<< HEAD:file.txt Hello world ======= Goodbye >>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt • Para resolver, basta editar o arquivo mantendo a parte que será mantida e realizar o commit.
  • 17. Git - Integrando remotamente • Remote: lista, adiciona e remove apelidos (aliases) de repositórios remotos. • Facilidade ao se trabalhar com mais de um repositório. • Por projeto. • Listar e listar com detalhes: # git remote # git remote -v • Adicionar: # git remote add apelido ssh://server/dir/proj.git • Remover: # git remote rm apelido
  • 18. Git - Repositório público • Geralmente ficará remoto. • Opção --bare para os comandos clone e init • Convenção: o nome do diretório será o nome do projeto seguido de “.git” # mkdir proj.git # cd proj.git # git --bare init ou # git clone --bare ~/proj proj.git
  • 19. Git - Integrando remotamente - cont. • Fetch: recupera as mudanças enviadas para o servidor remoto por outras pessoas. • Para aplicar as mudanças remotas, é necessário executar o comando merge. # git fetch apelido_remoto # git merge apelido_remoto/branch_remoto • Pull: basicamente faz o mesmo que um fetch seguido de merge. # git pull apelido_remoto branch
  • 20. Git - Integrando remotamente - cont. • Push: envia os commits locais para o servidor remoto. • Não é possível executar este comando se alguém o executou no meio-tempo. • Tal como no SVN, será necessário “atualizar” a versão local. # git push apelido_remoto branch
  • 22. Git - Exercício Local 1. Criar projeto e iniciá-lo
  • 23. Git - Exercício Local 1. Criar projeto e iniciá-lo 2. Incluir arquivos e verificar o status
  • 24. Git - Exercício Local 1. Criar projeto e iniciá-lo 2. Incluir arquivos e verificar o status 3. Adicionar os arquivos criados e realizar commit
  • 25. Git - Exercício Local 1. Criar projeto e iniciá-lo 2. Incluir arquivos e verificar o status 3. Adicionar os arquivos criados e realizar commit 4. Criar um branch e ir para ele
  • 26. Git - Exercício Local 1. Criar projeto e iniciá-lo 2. Incluir arquivos e verificar o status 3. Adicionar os arquivos criados e realizar commit 4. Criar um branch e ir para ele 5. Adicionar arquivos e realizar commit no novo branch
  • 27. Git - Exercício Local 1. Criar projeto e iniciá-lo 2. Incluir arquivos e verificar o status 3. Adicionar os arquivos criados e realizar commit 4. Criar um branch e ir para ele 5. Adicionar arquivos e realizar commit no novo branch 6. Voltar para o branch master e ver os arquivos
  • 28. Git - Exercício Local 1. Criar projeto e iniciá-lo 2. Incluir arquivos e verificar o status 3. Adicionar os arquivos criados e realizar commit 4. Criar um branch e ir para ele 5. Adicionar arquivos e realizar commit no novo branch 6. Voltar para o branch master e ver os arquivos 7. Aplicar as mudanças do novo branch no branch master
  • 30. Git - Exercício Remoto 1. [servidor] Criar projeto vazio
  • 31. Git - Exercício Remoto 1. [servidor] Criar projeto vazio 2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)
  • 32. Git - Exercício Remoto 1. [servidor] Criar projeto vazio 2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes) 3. [cliente1] Criar um apelido para o servidor
  • 33. Git - Exercício Remoto 1. [servidor] Criar projeto vazio 2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes) 3. [cliente1] Criar um apelido para o servidor 4. [cliente2] Baixar os arquivos do servidor
  • 34. Git - Exercício Remoto 1. [servidor] Criar projeto vazio 2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes) 3. [cliente1] Criar um apelido para o servidor 4. [cliente2] Baixar os arquivos do servidor 5. [cliente2] Fazer mudanças, commit e enviar p/ servidor
  • 35. Git - Exercício Remoto 1. [servidor] Criar projeto vazio 2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes) 3. [cliente1] Criar um apelido para o servidor 4. [cliente2] Baixar os arquivos do servidor 5. [cliente2] Fazer mudanças, commit e enviar p/ servidor 6. [cliente1] Fazer mudanças, commit e enviar p/ servidor
  • 36. Git - Exercício Remoto 1. [servidor] Criar projeto vazio 2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes) 3. [cliente1] Criar um apelido para o servidor 4. [cliente2] Baixar os arquivos do servidor 5. [cliente2] Fazer mudanças, commit e enviar p/ servidor 6. [cliente1] Fazer mudanças, commit e enviar p/ servidor 7. [cliente1] Criar branch, entrar nele, fazer mudanças, dar commit e enviar para servidor
  • 37. Git - Exercício Remoto 1. [servidor] Criar projeto vazio 2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes) 3. [cliente1] Criar um apelido para o servidor 4. [cliente2] Baixar os arquivos do servidor 5. [cliente2] Fazer mudanças, commit e enviar p/ servidor 6. [cliente1] Fazer mudanças, commit e enviar p/ servidor 7. [cliente1] Criar branch, entrar nele, fazer mudanças, dar commit e enviar para servidor 8. [cliente2] Baixar as mudanças feitas do servidor
  • 39. Git - Referências • http://gitref.org
  • 40. Git - Referências • http://gitref.org • http://book.git-scm.com

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n