Git e contribuição para 
projetos Open Source 
Bruno Orlandi
Bruno Orlandi 
● 4º Ano Ciências de Computação 
– ICMC USP 
● PET Computação 
● Gosta de compartilhar 
conhecimento 
● @Br...
Instalando 
● Instalar o Git: 
sudo apt­get 
install git 
● Instalar o Gitg: 
sudo apt­get 
install gitg 
http://git­scm. ...
Sobre o Minicurso 
● Não será abordado a parte técnica do Git. 
● Objetivo aprender Git e sua utilidade na 
prática! 
● Dú...
Conteúdo 
● Visão Geral 
● Comandos Básicos 
● Publicando e Colaborando 
● Trabalho em Equipe 
● Praticar 
● Praticar 
● P...
O que é Git-SCM 
● Sistema de Controle de Versão Distribuído 
● SCM → Software Configuration Management 
● Criado por Linu...
Gerência de Configuração de 
Software
Gerência de Configuração de Software 
● Durante o desenvolvimento do software 
queremos saber: 
– O que mudou e quando? 
–...
Gerência de Configuração de Software 
● Identificação 
● Documentação 
● Controle 
● Auditoria
Gerência de Configuração de Software 
● Artefatos: 
– Código fonte 
– Documentação do Software 
– Manual de Usuário
Problema exemplo 
● Você precisa editar um site hospedado em um 
servidor 
● Você faz o download via FTP 
● Faz as alteraç...
Problema exemplo 
● Agora outro desenvolvedor também deve fazer 
alterações no site 
● Baixa o mesmo arquivo junto com voc...
Controle de Versão resolve 
● Controle de versão faz o 'merge' entre as 
alterações.
Distribuído
Controle de Versão
Controle de Versão
O que é Github 
● Servidor de repositórios Git 
● Surgiu em 2008 
● +3 milhões de usuários
Estão no Github
Usam Git
Alternativas 
● Subversion (SVN) 
● Mercurial 
● CVS ­Concurrent 
Versioning System 
● Bazaar 
● Git é o mais rápido e efi...
Servidores 
Servidores/Suporte git Mercurial SVN 
Github V 
Bitbucket V V 
SourceForge V V V 
Google Code V V V
Antes de começar alguns termos técnios!
Termos 
● Repositório: onde são armazenados todos os 
arquivos do projeto. 
● Commit: registro de alterações realizadas. 
...
Termos 
● Merge: incorporar alterações realizadas ou 
unir branchs. 
● Fork: bifurcação, uma cópia do projeto. 
Ubuntu é u...
Vamos começar na prática!
Help 
● Quando precisar de ajuda: 
git help <command>
Configurando 
● Configure seu nome e e­mail: 
git config ­­global 
user.name 
“Meu Nome” 
git config ­­global 
user.email ...
Criando o Primeiro Repositório 
git init PrimeiroRepo 
● Será criado o diretório com o novo repositório 
vazio. 
cd Primei...
Crie seu primeiro arquivo 
● Crie um arquivo, edite e adicione ao 
repositório: 
touch PrimeiroArquivo 
gedit PrimeiroArqu...
Estados dos arquivos 
● Não monitorado (untracked) 
● Modificado (modified) 
● Preparado (staged) 
● Consolidado (commited...
Estados dos arquivos
Status dos arquivos 
● Use o comando: 
git status 
● Exibe alterações desde o último commit 
● Exibe os arquivos: 
– Modif...
Status dos arquivos 
● Edite o arquivo criado anteriormente 
● Crie um novo arquivo e veja o seu status no 
repositório
Explicando os comandos usados 
git add <lista de arquivos> 
● Adiciona os arquivos novos e modificados na 
Staging Area, p...
Explicando comandos usados 
git commit [­m 
“Message”] 
● Registra o commit de todos os arquivos que 
estão na Staging Are...
Git Workflow 
● Basicamente a maior parte do trabalho com o 
git consiste nestas tarefas: 
– Editar 
– Commitar 
● Exercit...
Log e Show 
git log 
● Lista os commits mais recentes. 
git log –pretty=oneline 
git shortlog 
git log ­­author= 
User 
gi...
Dif 
git diff 
● Exibir diferenças entre commits e branchs 
git diff [path] 
● Diferença em relação ao stage ou ultimo 
co...
Ferramenta externa Dif 
git config ­­global 
merge.tool 
git config ­­global 
diff.external 
● Permite usar uma ferramenta...
Git Blame 
● Encontrar os culpados pelas alterações em um 
arquivo. 
git blame <arquivo> ­L 
10,15 
● Vai exibir das linha...
Git mv e rm 
● Git não trata automaticamente arquivos 
renomeados ou movidos. 
git mv <path1> <path2> 
git rm <file> 
● Re...
Desfazendo alterações 
git checkout ­­< 
path_or_file> 
● Irá desfazer todas as alterações que não 
estejam no Stage desde...
Git reset 
git reset <file> 
● Remove um novo arquivo da staging area. 
● Não serve para desfazer alterações, para isso 
u...
Git checkout 
git checkout <commit_id> 
● Irá trocar HEAD para apontar para o commit. 
● Altera o repositório para o estad...
Git Revert 
● Reverter um commit pode ser bastante útil. 
git revert <commit_id> 
● Irá criar um novo commit que desfaz as...
Branching 
Criando ramificações do repositório
Branch 
● É uma ramificação do repositório 
● Alterações(commits) ocorrem na branch 
● Muito útil para trabalhos colaborat...
Branching 
git branch new_branch 
git checkout new_branch 
● Cria e troca para uma nova branch 
● É possível comparar bran...
Merge 
● Uma tarefa muito comum com branchs é 
realizar o merge com outra branch. 
git checkout master 
git merge new_bran...
Conflitos 
● Conflitos podem acontecer ao unirmos 
alterações 
● Acontecem quando ramificações diferentes 
possuem as mesm...
Merge com Conflito 
● Ao tentar fazer o Merge se houver conflitos 
será acusado e anotado nos arquivos. 
● O repositório f...
Git Rebase 
● Quando a Branch pai sofre alterações e deseja­se 
aplicar estas alterações para Branchs filhas. 
● Branchs f...
Git Rebase 
● Quando a Branch pai sofre alterações e deseja­se 
aplicar estas alterações para Branchs filhas. 
● Branchs f...
Tag 
● Útil para definir versões estáveis do projeto. 
● Semelhante a Branch porém não sofre mais 
alterações. 
● Guarda o...
Interfaces Gráficas GUI 
● Pelo terminal se faz tudo. 
● Interfaces gráficas ajudam na visualização e 
auxiliam em algumas...
Github e Remotes
Remote 
● Repositório remoto, hospedado em um 
servidor. 
● São referenciados por uma URL. 
● Vamos trabalhar com repositó...
Remote 
● Podem receber vários commits. 
● Sincronizar o trabalho colaborativo. 
● Exige chave SSH. 
git remote add origin...
Criar conta no Github 
● Acessem https://github.com/ 
● Criem uma conta utilizando utilizando o 
mesmo e­mail 
configurado...
Criar um repositório remoto 
● Crie um repositório no Github. 
● Inicialize um repositório local. 
● Configure o repositór...
Push 
● Enviar alterações (commits) de uma branch 
para o repositório remoto. 
● A primeira vez: 
git push ­u 
origin mast...
Pull 
● Baixa as alterações do repositório remoto e 
realiza o Merge automático com o repositório 
local. 
● Mantém o repo...
Git Clone 
● Baixa o repositório remoto. 
● Outra forma de criar um repositório local. 
● Já vem com o remote configurado....
Fork no Github 
● Copia um repositório remoto de outro usuário 
para o seu usuário no Github. 
● É assim que começa a cont...
Issues no Github 
● Tradução: Questões. 
● Reportar bugs. 
● Organizar tarefas a serem feitas. 
● Permite comentários dos ...
Pull Request 
● O grande simbolo de colaboração. 
● É quando você solicita que sua alterações 
sejam unidas a uma branch n...
Vamos praticar mais!
Caso de Exemplo 
● Extensão para GNOME: Desktop Scroller. 
● Cria uma borda de rolagem entre os Desktops. 
● Permite confi...
Extras 
● .gitignore 
● Git commit ­­ammend 
● Git Stash e Stash Pop 
● Milestones 
● Hooks 
● Github pages
Dúvidas?
Contato 
● @BrOrlandi 
● brorlandi@gmail.com 
● www.slideshare.net/BrunoOrlandi
Obrigado! 
http://goo.gl/XEsbPQ
Próximos SlideShares
Carregando em…5
×

Minicurso GIT PET Computação

549 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
549
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

×