Bruno Orlandi
Git e contribuição para
projetos Open Source
Bruno Orlandi
●
4º Ano Ciências de Computação 
– ICMC USP
●
PET Computação
●
HTML5 Web e Mobile
●
Gosta de compartilhar 
c...
Instalando
●
Instalar o Git:
sudo apt­get install git
●
Instalar o Gitg:
sudo apt­get install gitg
Sobre o Minicurso
●
Não será abordado a parte técnica do Git.
●
Objetivo aprender Git e sua utilidade na 
prática!
●
Dúvid...
Conteúdo
●
Visão Geral
●
Comandos Básicos
●
Publicando e Colaborando
●
Trabalho em Equipe
●
Praticar
●
Praticar
●
Praticar
O que é Git-SCM
●
Sistema de Controle de Versão Distribuído
●
SCM   Software Configuration Management→
●
Criado por Linus ...
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?
– Po...
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ções...
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
●
+5 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 eficiente
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. 
Co...
Termos
●
Merge: incorporar alterações realizadas ou 
unir branchs.
●
Fork: bifurcação, uma cópia do projeto. 
Ubuntu é um ...
Vamos começar na prática!
Instalando
●
Instalar o Git:
sudo apt­get install git
●
Instalar o Gitg:
sudo apt­get install gitg
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 
meue...
Criando o Primeiro Repositório
git init PrimeiroRepo
●
Será criado o diretório com o novo repositório 
vazio.
cd PrimeiroR...
Crie seu primeiro arquivo
●
Crie um arquivo, edite e adicione ao 
repositório:
touch PrimeiroArquivo
gedit PrimeiroArquivo...
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:
– Modificado...
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, pre...
Explicando comandos usados
git commit [­m “Message”]
●
Registra o commit de todos os arquivos que 
estão na Staging Area.
...
Git Workflow
●
Basicamente a maior parte do trabalho com o 
git consiste nestas tarefas:
– Editar
– Commitar
●
Exercite es...
Log e Show
git log
●
Lista os commits mais recentes.
git log –pretty=oneline
git shortlog
git show [commit]
●
Mostra as al...
Dif
git diff
●
Exibir diferenças entre commits e branchs
git diff [path]
●
Diferença no diretório
git diff HEAD~1 HEAD
●
M...
Ferramenta externa Dif
git config ­­global merge.tool 
kdiff3
●
Permite usar uma ferramenta externa para 
usar no Diff e t...
Git Blame
●
Encontrar os culpados pelas alterações em um 
arquivo.
git blame <arquivo> ­L 10,15
●
Vai exibir das linhas 10...
Git mv e rm
●
Git não trata perfeitamente arquivos 
renomeados ou movidos.
git mv <path1>  <path2>
git rm <file>
●
Remove ...
Desfazendo alterações
git checkout ­­ <path_or_file>
●
Irá desfazer todas as alterações que não 
estejam no Stage desde o ...
Git reset
git reset <file>
●
Remove um novo arquivo da staging area.
●
Não serve para desfazer alterações, para isso 
use:...
Git checkout
git checkout <commit_id>
●
Irá trocar HEAD para apontar para o commit.
●
Altera o repositório para o estado d...
Git Revert
●
Reverter um commit pode ser bastante útil.
git revert <commit_id>
●
Irá criar um novo commit que desfaz as 
a...
Branching
Criando ramificações do repositório
Branch
●
É uma ramificação do repositório
●
Alterações(commits) ocorrem na branch
●
Muito útil para trabalhos colaborativo...
Branching
git branch new_branch
git checkout new_branch
●
Cria e troca para uma nova branch
●
É possível comparar branchs ...
Merge
●
Uma tarefa muito comum com branchs é 
realizar o merge com outra branch.
git checkout master
git merge new_branch
...
Git Rebase
●
Quando a Branch pai sofre alterações e deseja­
se aplicar estas alterações para Branchs filhas.
●
Branchs fil...
Conflitos
●
Conflitos podem acontecer ao unirmos 
alterações
●
Acontecem quando ramificações diferentes 
possuem as mesmas...
Merge com Conflito
●
Ao tentar fazer o Merge se houver conflitos 
será acusado e anotado nos arquivos.
●
O repositório fic...
Tag
●
Útil para definir versões estáveis do projeto.
●
Semelhante a Branch porém não sofre mais 
alterações.
●
Guarda o es...
Github e Remotes
Remote
●
Repositório remoto, hospedado em um 
servidor.
●
São referenciados por uma URL.
●
Vamos trabalhar com repositório...
Remote
●
Podem receber vários commits.
●
Sincronizar o trabalho colaborativo.
●
Exige chave SSH.
git remote add origin <UR...
Criar conta no Github
●
Acessem https://github.com/
●
Criem uma conta utilizando utilizando o 
mesmo e­mail configurado no...
Criar um repositório remoto
●
Crie um repositório no Github.
●
Inicialize um repositório local.
●
Configure o repositório ...
Push
●
Enviar alterações (commits) de uma branch 
para o repositório remoto.
●
A primeira vez:
git push ­u origin master
●...
Pull
●
Baixa as alterações do repositório remoto e 
realiza o Merge automático com o repositório 
local.
●
Mantém o reposi...
Git Clone
●
Baixa o repositório remoto.
●
Outra forma de criar um repositório local.
●
Já vem com o remote configurado.
gi...
Fork no Github
●
Copia um repositório remoto de outro usuário 
para o seu usuário no Github.
●
É assim que começa a contri...
Issues no Github
●
Tradução: Questões.
●
Reportar bugs.
●
Organizar tarefas a serem feitas.
●
Permite comentários dos usuá...
Pull Request
●
O grande simbolo de colaboração.
●
É quando você solicita que sua alterações 
sejam unidas a uma branch no ...
Vamos praticar mais!
Extras
●
.gitignore
●
Git commit ­­ammend
●
Git Stash e Stash Pop
●
Milestones
●
Hooks
●
Github pages
Dúvidas?
Convite
●
Palestras
●
Minicursos
●
Concursos
●
Prêmios
●
Feira de recrutamento
●
http://semcomp.icmc.usp.br/
●
facebook.co...
Obrigado!
18 a 22 de Agosto
Próximos SlideShares
Carregando em…5
×

Minicurso Git Semcomp Beta

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

×