Git para quem vem do SVN

2.883 visualizações

Publicada em

Apresentação sobre o Git, abordando sua utilização básica, e comparando-o com o SVN. O rodapé sobre o Grails se deve ao fato de que a apresentação foi feita em um workshop sobre ele.

Publicada em: Tecnologia
1 comentário
2 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
2.883
No SlideShare
0
A partir de incorporações
0
Número de incorporações
565
Ações
Compartilhamentos
0
Downloads
0
Comentários
1
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Git para quem vem do SVN

    1. 1. Git a partir do SVN Michael Schuenck dos Santos http://twitter.com/michaelss http://delicious.com/michaelss
    2. 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. 3. Ferramentas• CVS• SVN (Subversion)• Mercurial• Git• MS Visual SourceSafe• Rational ClearCase
    4. 4. SVN• Modelo centralizado • Um servidor • Um ou mais desenvolvedores• Considerado uma evolução do CVS.
    5. 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. 6. SVN - Exemplo de Histórico
    7. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
    21. 21. Git - Exercício Local
    22. 22. Git - Exercício Local1. Criar projeto e iniciá-lo
    23. 23. Git - Exercício Local1. Criar projeto e iniciá-lo2. Incluir arquivos e verificar o status
    24. 24. Git - Exercício Local1. Criar projeto e iniciá-lo2. Incluir arquivos e verificar o status3. Adicionar os arquivos criados e realizar commit
    25. 25. Git - Exercício Local1. Criar projeto e iniciá-lo2. Incluir arquivos e verificar o status3. Adicionar os arquivos criados e realizar commit4. Criar um branch e ir para ele
    26. 26. Git - Exercício Local1. Criar projeto e iniciá-lo2. Incluir arquivos e verificar o status3. Adicionar os arquivos criados e realizar commit4. Criar um branch e ir para ele5. Adicionar arquivos e realizar commit no novo branch
    27. 27. Git - Exercício Local1. Criar projeto e iniciá-lo2. Incluir arquivos e verificar o status3. Adicionar os arquivos criados e realizar commit4. Criar um branch e ir para ele5. Adicionar arquivos e realizar commit no novo branch6. Voltar para o branch master e ver os arquivos
    28. 28. Git - Exercício Local1. Criar projeto e iniciá-lo2. Incluir arquivos e verificar o status3. Adicionar os arquivos criados e realizar commit4. Criar um branch e ir para ele5. Adicionar arquivos e realizar commit no novo branch6. Voltar para o branch master e ver os arquivos7. Aplicar as mudanças do novo branch no branch master
    29. 29. Git - Exercício Remoto
    30. 30. Git - Exercício Remoto1. [servidor] Criar projeto vazio
    31. 31. Git - Exercício Remoto1. [servidor] Criar projeto vazio2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)
    32. 32. Git - Exercício Remoto1. [servidor] Criar projeto vazio2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)3. [cliente1] Criar um apelido para o servidor
    33. 33. Git - Exercício Remoto1. [servidor] Criar projeto vazio2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)3. [cliente1] Criar um apelido para o servidor4. [cliente2] Baixar os arquivos do servidor
    34. 34. Git - Exercício Remoto1. [servidor] Criar projeto vazio2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)3. [cliente1] Criar um apelido para o servidor4. [cliente2] Baixar os arquivos do servidor5. [cliente2] Fazer mudanças, commit e enviar p/ servidor
    35. 35. Git - Exercício Remoto1. [servidor] Criar projeto vazio2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)3. [cliente1] Criar um apelido para o servidor4. [cliente2] Baixar os arquivos do servidor5. [cliente2] Fazer mudanças, commit e enviar p/ servidor6. [cliente1] Fazer mudanças, commit e enviar p/ servidor
    36. 36. Git - Exercício Remoto1. [servidor] Criar projeto vazio2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)3. [cliente1] Criar um apelido para o servidor4. [cliente2] Baixar os arquivos do servidor5. [cliente2] Fazer mudanças, commit e enviar p/ servidor6. [cliente1] Fazer mudanças, commit e enviar p/ servidor7. [cliente1] Criar branch, entrar nele, fazer mudanças, dar commit e enviar para servidor
    37. 37. Git - Exercício Remoto1. [servidor] Criar projeto vazio2. [cliente1] Enviar os arquivos para o servidor (fazer commit antes)3. [cliente1] Criar um apelido para o servidor4. [cliente2] Baixar os arquivos do servidor5. [cliente2] Fazer mudanças, commit e enviar p/ servidor6. [cliente1] Fazer mudanças, commit e enviar p/ servidor7. [cliente1] Criar branch, entrar nele, fazer mudanças, dar commit e enviar para servidor8. [cliente2] Baixar as mudanças feitas do servidor
    38. 38. Git - Referências
    39. 39. Git - Referências• http://gitref.org
    40. 40. Git - Referências• http://gitref.org• http://book.git-scm.com

    ×