Minicurso Git Semcomp Beta

355 visualizações

Publicada em

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

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

Nenhuma nota no slide

Minicurso Git Semcomp Beta

  1. 1. Bruno Orlandi Git e contribuição para projetos Open Source
  2. 2. Bruno Orlandi ● 4º Ano Ciências de Computação  – ICMC USP ● PET Computação ● HTML5 Web e Mobile ● Gosta de compartilhar  conhecimento ● @BrOrlandi
  3. 3. Instalando ● Instalar o Git: sudo apt­get install git ● Instalar o Gitg: sudo apt­get install gitg
  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 ● +5 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. Instalando ● Instalar o Git: sudo apt­get install git ● Instalar o Gitg: sudo apt­get install gitg
  27. 27. Help ● Quando precisar de ajuda: git help <command>
  28. 28. 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
  29. 29. 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
  30. 30. 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.”
  31. 31. Estados dos arquivos ● Não monitorado (untracked) ● Modificado (modified) ● Preparado (staged) ● Consolidado (commited)
  32. 32. Estados dos arquivos
  33. 33. 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
  34. 34. Status dos arquivos ● Edite o arquivo criado anteriormente ● Crie um novo arquivo e veja o seu status no  repositório
  35. 35. 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”
  36. 36. 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
  37. 37. Git Workflow ● Basicamente a maior parte do trabalho com o  git consiste nestas tarefas: – Editar – Commitar ● Exercite estes comandos!
  38. 38. Log e Show git log ● Lista os commits mais recentes. git log –pretty=oneline git shortlog git show [commit] ● Mostra as alterações de um commit ● Commit deve ser especificado pela chave ● Sem parâmetro mostra o ultimo commit
  39. 39. Dif git diff ● Exibir diferenças entre commits e branchs git diff [path] ● Diferença no diretório git diff HEAD~1 HEAD ● Mostra o que foi alterado no último commit
  40. 40. Ferramenta externa Dif git config ­­global merge.tool  kdiff3 ● Permite usar uma ferramenta externa para  usar no Diff e também no Merge.
  41. 41. 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.
  42. 42. Git mv e rm ● Git não trata perfeitamente 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.
  43. 43. 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.
  44. 44. Git reset git reset <file> ● Remove um novo arquivo da staging area. ● Não serve para desfazer alterações, para isso  use: checkout ­­  ● Possui outras funcionalidades.
  45. 45. 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.
  46. 46. 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.
  47. 47. Branching Criando ramificações do repositório
  48. 48. 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
  49. 49. 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
  50. 50. 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
  51. 51. 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!
  52. 52. Conflitos ● Conflitos podem acontecer ao unirmos  alterações ● Acontecem quando ramificações diferentes  possuem as mesmas linhas nos mesmos  arquivos editadas diferentes
  53. 53. 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.
  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. Github e Remotes
  56. 56. 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.
  57. 57. Remote ● Podem receber vários commits. ● Sincronizar o trabalho colaborativo. ● Exige chave SSH. git remote add origin <URL>
  58. 58. Criar conta no Github ● Acessem https://github.com/ ● Criem uma conta utilizando utilizando o  mesmo e­mail configurado no git config. ● Gerar chaves SSH no Linux: https://help.github.com/articles/generating­s sh­keys
  59. 59. 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.
  60. 60. 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
  61. 61. 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>
  62. 62. Git Clone ● Baixa o repositório remoto. ● Outra forma de criar um repositório local. ● Já vem com o remote configurado. git clone <URL>
  63. 63. 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.
  64. 64. Issues no Github ● Tradução: Questões. ● Reportar bugs. ● Organizar tarefas a serem feitas. ● Permite comentários dos usuários. ● Pode referenciar commits.
  65. 65. 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.
  66. 66. Vamos praticar mais!
  67. 67. Extras ● .gitignore ● Git commit ­­ammend ● Git Stash e Stash Pop ● Milestones ● Hooks ● Github pages
  68. 68. Dúvidas?
  69. 69. Convite ● Palestras ● Minicursos ● Concursos ● Prêmios ● Feira de recrutamento ● http://semcomp.icmc.usp.br/ ● facebook.com/semcomp
  70. 70. Obrigado! 18 a 22 de Agosto

×