Minicurso GIT PET Computação

556 visualizações

Publicada em

Ministrado em 18 de Outubro de 2014.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
556
No SlideShare
0
A partir de incorporações
0
Número de incorporações
11
Ações
Compartilhamentos
0
Downloads
20
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Minicurso GIT PET Computação

  1. 1. Git e contribuição para projetos Open Source Bruno Orlandi
  2. 2. Bruno Orlandi ● 4º Ano Ciências de Computação – ICMC USP ● PET Computação ● Gosta de compartilhar conhecimento ● @BrOrlandi
  3. 3. Instalando ● Instalar o Git: sudo apt­get install git ● Instalar o Gitg: sudo apt­get install gitg http://git­scm. com
  4. 4. Sobre o Minicurso ● Não será abordado a parte técnica do Git. ● Objetivo aprender Git e sua utilidade na prática! ● Dúvidas e correções a qualquer momento!
  5. 5. Conteúdo ● Visão Geral ● Comandos Básicos ● Publicando e Colaborando ● Trabalho em Equipe ● Praticar ● Praticar ● Praticar
  6. 6. O que é Git-SCM ● Sistema de Controle de Versão Distribuído ● SCM → Software Configuration Management ● Criado por Linus Torvalds (2005) ● Auxiliar no Desenvolvimento do Linux
  7. 7. Gerência de Configuração de Software
  8. 8. Gerência de Configuração de Software ● Durante o desenvolvimento do software queremos saber: – O que mudou e quando? – Por que mudou? – Quem fez a mudança? – Podemos reproduzir esta mudança?
  9. 9. Gerência de Configuração de Software ● Identificação ● Documentação ● Controle ● Auditoria
  10. 10. Gerência de Configuração de Software ● Artefatos: – Código fonte – Documentação do Software – Manual de Usuário
  11. 11. Problema exemplo ● Você precisa editar um site hospedado em um servidor ● Você faz o download via FTP ● Faz as alterações necessárias ● Manda os arquivos alterados para o servidor via FTP
  12. 12. Problema exemplo ● Agora outro desenvolvedor também deve fazer alterações no site ● Baixa o mesmo arquivo junto com você ● Edita e manda para o servidor depois de você ● Sobrescreve suas alterações
  13. 13. Controle de Versão resolve ● Controle de versão faz o 'merge' entre as alterações.
  14. 14. Distribuído
  15. 15. Controle de Versão
  16. 16. Controle de Versão
  17. 17. O que é Github ● Servidor de repositórios Git ● Surgiu em 2008 ● +3 milhões de usuários
  18. 18. Estão no Github
  19. 19. Usam Git
  20. 20. Alternativas ● Subversion (SVN) ● Mercurial ● CVS ­Concurrent Versioning System ● Bazaar ● Git é o mais rápido e eficiente
  21. 21. Servidores Servidores/Suporte git Mercurial SVN Github V Bitbucket V V SourceForge V V V Google Code V V V
  22. 22. Antes de começar alguns termos técnios!
  23. 23. Termos ● Repositório: onde são armazenados todos os arquivos do projeto. ● Commit: registro de alterações realizadas. Como se fosse um “checkpoint”. ● Branch: ramificação do projeto, uma linha de desenvolvimento diferente
  24. 24. Termos ● Merge: incorporar alterações realizadas ou unir branchs. ● Fork: bifurcação, uma cópia do projeto. Ubuntu é um fork do Debian. ● Push: enviar as alterações para um repositório remoto. ● Pull e Fetch: baixar as alterações feitas de um repositório remoto. Pull realiza o merge.
  25. 25. Vamos começar na prática!
  26. 26. Help ● Quando precisar de ajuda: git help <command>
  27. 27. Configurando ● Configure seu nome e e­mail: git config ­­global user.name “Meu Nome” git config ­­global user.email meuemail@email.com ● Configure cores no terminal: git config ­­global color.ui true
  28. 28. Criando o Primeiro Repositório git init PrimeiroRepo ● Será criado o diretório com o novo repositório vazio. cd PrimeiroRepo ● Todas as configurações do repositório ficam na pasta .git
  29. 29. Crie seu primeiro arquivo ● Crie um arquivo, edite e adicione ao repositório: touch PrimeiroArquivo gedit PrimeiroArquivo git add PrimeiroArquivo git commit ­m “Criado o primeiro arquivo.”
  30. 30. Estados dos arquivos ● Não monitorado (untracked) ● Modificado (modified) ● Preparado (staged) ● Consolidado (commited)
  31. 31. Estados dos arquivos
  32. 32. Status dos arquivos ● Use o comando: git status ● Exibe alterações desde o último commit ● Exibe os arquivos: – Modificados – Preparados para o Commit – Novos que não estão no repositório
  33. 33. Status dos arquivos ● Edite o arquivo criado anteriormente ● Crie um novo arquivo e veja o seu status no repositório
  34. 34. Explicando os comandos usados git add <lista de arquivos> ● Adiciona os arquivos novos e modificados na Staging Area, preparados para o próximo Commit. ● git add ­­all ● git add *.txt ● git add folder/*.txt ● git add folder/ ● git add “*.txt”
  35. 35. Explicando comandos usados git commit [­m “Message”] ● Registra o commit de todos os arquivos que estão na Staging Area. ● Se o parametro de mensagem não for passado abrirá um editor de texto para escrever a mensagem ● git config ­­global core.editor gedit
  36. 36. Git Workflow ● Basicamente a maior parte do trabalho com o git consiste nestas tarefas: – Editar – Commitar ● Exercite estes comandos!
  37. 37. Log e Show git log ● Lista os commits mais recentes. git log –pretty=oneline git shortlog git log ­­author= User git show [commit] ● Mostra as alterações de um commit ● Commit deve ser especificado pela chave
  38. 38. Dif git diff ● Exibir diferenças entre commits e branchs git diff [path] ● Diferença em relação ao stage ou ultimo commit git diff HEAD~1 HEAD ● Mostra o que foi alterado no último commit
  39. 39. Ferramenta externa Dif git config ­­global merge.tool git config ­­global diff.external ● Permite usar uma ferramenta externa para usar no Diff e no Merge. ● No Eclipse:
  40. 40. Git Blame ● Encontrar os culpados pelas alterações em um arquivo. git blame <arquivo> ­L 10,15 ● Vai exibir das linhas 10 a 15 quem escreveu elas.
  41. 41. Git mv e rm ● Git não trata automaticamente arquivos renomeados ou movidos. git mv <path1> <path2> git rm <file> ● Remove um arquivo do repositório. ● A diferença é que essas alterações já são adicionadas ao staging.
  42. 42. Desfazendo alterações git checkout ­­< path_or_file> ● Irá desfazer todas as alterações que não estejam no Stage desde o último commit. git checkout HEAD ­­< path_file> ● Desfazer as alterações desde o último commit incluindo o Stage.
  43. 43. Git reset git reset <file> ● Remove um novo arquivo da staging area. ● Não serve para desfazer alterações, para isso use: checkout ­­
  44. 44. Git checkout git checkout <commit_id> ● Irá trocar HEAD para apontar para o commit. ● Altera o repositório para o estado daquele commit. ● Útil para fazer testes antes e depois de alterações. git checkout master ● Para voltar o HEAD à posição normal.
  45. 45. Git Revert ● Reverter um commit pode ser bastante útil. git revert <commit_id> ● Irá criar um novo commit que desfaz as alterações do commit especificado.
  46. 46. Branching Criando ramificações do repositório
  47. 47. Branch ● É uma ramificação do repositório ● Alterações(commits) ocorrem na branch ● Muito útil para trabalhos colaborativos ● Branchs de desenvolvimento facilitam o controle git branch
  48. 48. Branching git branch new_branch git checkout new_branch ● Cria e troca para uma nova branch ● É possível comparar branchs com diff: git diff master new_branch
  49. 49. Merge ● Uma tarefa muito comum com branchs é realizar o merge com outra branch. git checkout master git merge new_branch ● Excluir uma branch: git branch ­d new_branch
  50. 50. Conflitos ● Conflitos podem acontecer ao unirmos alterações ● Acontecem quando ramificações diferentes possuem as mesmas linhas nos mesmos arquivos editadas diferentes
  51. 51. Merge com Conflito ● Ao tentar fazer o Merge se houver conflitos será acusado e anotado nos arquivos. ● O repositório fica em estado aguardando você consertar os conflitos manualmente. ● Após isso deve ser feito um commit indicando que o conflito foi resolvido.
  52. 52. Git Rebase ● Quando a Branch pai sofre alterações e deseja­se aplicar estas alterações para Branchs filhas. ● Branchs filhas devem realizar o rebase: git rebase master ● Pode acontecer conflitos! ● Diferença do Merge é que adiciona os commits antes dos commits da branch.
  53. 53. Git Rebase ● Quando a Branch pai sofre alterações e deseja­se aplicar estas alterações para Branchs filhas. ● Branchs filhas devem realizar o rebase: git rebase master ● Pode acontecer conflitos! ● Diferença do Merge é que adiciona os commits antes dos commits da branch.
  54. 54. Tag ● Útil para definir versões estáveis do projeto. ● Semelhante a Branch porém não sofre mais alterações. ● Guarda o estado atual da branch. git tag [nome da tag] git push <remote> <tag>
  55. 55. Interfaces Gráficas GUI ● Pelo terminal se faz tudo. ● Interfaces gráficas ajudam na visualização e auxiliam em algumas tarefas. ● Recomendadas: – Egit – Plugin para Eclipse – Gitg – Para Linux – SourceTree – Para Windows ● Não Recomendado: Github for Windows
  56. 56. Github e Remotes
  57. 57. Remote ● Repositório remoto, hospedado em um servidor. ● São referenciados por uma URL. ● Vamos trabalhar com repositório remoto no Github. ● Outra opção interessante Bitbucket.
  58. 58. Remote ● Podem receber vários commits. ● Sincronizar o trabalho colaborativo. ● Exige chave SSH. git remote add origin <URL>
  59. 59. Criar conta no Github ● Acessem https://github.com/ ● Criem uma conta utilizando utilizando o mesmo e­mail configurado no git config. ● Github permite autenticação por chaves SSH. Use isto!
  60. 60. Criar um repositório remoto ● Crie um repositório no Github. ● Inicialize um repositório local. ● Configure o repositório remoto. ● Crie um arquivo README.md ● Faça o upload das alterações.
  61. 61. Push ● Enviar alterações (commits) de uma branch para o repositório remoto. ● A primeira vez: git push ­u origin master ● O envio é rejeitado se o repositório local não estiver sincronizado. git push <remote> <branch> git push
  62. 62. Pull ● Baixa as alterações do repositório remoto e realiza o Merge automático com o repositório local. ● Mantém o repositório sincronizado com os últimos commits de uma branch. ● Permite baixar novas branchs que não foram criadas localmente. git pull git pull <remote> <nova>
  63. 63. Git Clone ● Baixa o repositório remoto. ● Outra forma de criar um repositório local. ● Já vem com o remote configurado. git clone <URL>
  64. 64. Fork no Github ● Copia um repositório remoto de outro usuário para o seu usuário no Github. ● É assim que começa a contribuição para outros projetos. ● Você teria uma cópia independente do repositório original, podendo fazer quaisquer alterações.
  65. 65. Issues no Github ● Tradução: Questões. ● Reportar bugs. ● Organizar tarefas a serem feitas. ● Permite comentários dos usuários. ● Pode referenciar commits.
  66. 66. Pull Request ● O grande simbolo de colaboração. ● É quando você solicita que sua alterações sejam unidas a uma branch no mesmo repositório ou a um repositório que sofreu o fork. ● Pull request podem ser comentados e referenciados no Github. ● Muito útil para o trabalho colaborativo.
  67. 67. Vamos praticar mais!
  68. 68. Caso de Exemplo ● Extensão para GNOME: Desktop Scroller. ● Cria uma borda de rolagem entre os Desktops. ● Permite configurar onde a borda é ativa. ● Hoje mantido por outros usuários.
  69. 69. Extras ● .gitignore ● Git commit ­­ammend ● Git Stash e Stash Pop ● Milestones ● Hooks ● Github pages
  70. 70. Dúvidas?
  71. 71. Contato ● @BrOrlandi ● brorlandi@gmail.com ● www.slideshare.net/BrunoOrlandi
  72. 72. Obrigado! http://goo.gl/XEsbPQ

×