git 101

  • 453 views
Uploaded on

Palestra apresentada no I Workshop de Software LIvre do Centro de Informática http://cinlug-br.org

Palestra apresentada no I Workshop de Software LIvre do Centro de Informática http://cinlug-br.org

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
453
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. git 1quinta-feira, 19 de maio de 2011
  • 2. git is... “Git is a free & open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency.” 2quinta-feira, 19 de maio de 2011
  • 3. quem usa? 3quinta-feira, 19 de maio de 2011
  • 4. fedora debian gnome perl linux kernel RoR android Itautec (new) Qt facebook VLC INdT 4quinta-feira, 19 de maio de 2011
  • 5. linux kernel alguns números... 5quinta-feira, 19 de maio de 2011
  • 6. 6quinta-feira, 19 de maio de 2011
  • 7. 7quinta-feira, 19 de maio de 2011
  • 8. 8quinta-feira, 19 de maio de 2011
  • 9. 9quinta-feira, 19 de maio de 2011
  • 10. característicasquinta-feira, 19 de maio de 2011
  • 11. rápido 11quinta-feira, 19 de maio de 2011
  • 12. simples 12quinta-feira, 19 de maio de 2011
  • 13. escalável 13quinta-feira, 19 de maio de 2011
  • 14. distribuído 14quinta-feira, 19 de maio de 2011
  • 15. local centralizado distribuído 15quinta-feira, 19 de maio de 2011
  • 16. local 16quinta-feira, 19 de maio de 2011
  • 17. centralizado 17quinta-feira, 19 de maio de 2011
  • 18. distribuído 18quinta-feira, 19 de maio de 2011
  • 19. git 101quinta-feira, 19 de maio de 2011
  • 20. instalação # a partir de agora é no terminal do linux! # baixar e executar o script de instalação local $ wget http://www.cin.ufpe.br/~astm/git/git.sh # ubuntu $ sudo apt-get install git-core # fedora $ su; yum install gitquinta-feira, 19 de maio de 2011
  • 21. git init cria um repositório ou reinicia um existentequinta-feira, 19 de maio de 2011
  • 22. git init - exemplo # cria pasta do projeto $ mkdir ~/ldc-automacao # muda para essa pasta $ cd ~/ldc-automacao # inicia o repositório $ git initquinta-feira, 19 de maio de 2011
  • 23. git status mostra o status da pasta de trabalhoquinta-feira, 19 de maio de 2011
  • 24. quinta-feira, 19 de maio de 2011
  • 25. git add adiciona arquivos ao indexquinta-feira, 19 de maio de 2011
  • 26. git add - exemplo #1 # cria arquivo README $ touch README # o adiciona ao index $ git add READMEquinta-feira, 19 de maio de 2011
  • 27. git add - exemplo #2 # baixa o código do LDC 1.0 $ wget adrianomelo.com/ldc.tar # extrai os arquivos $ tar -xf ldc.tar $ git init $ git add .quinta-feira, 19 de maio de 2011
  • 28. git rm remove o arquivo da árvore de trabalho e do indexquinta-feira, 19 de maio de 2011
  • 29. git commit grava as mudanças no repositórioquinta-feira, 19 de maio de 2011
  • 30. git commit - exemplo # faz o commit das últimas alterações $ git commit -m ‘ldc importado’ # faz o commit sem precisar do “git add” $ git commit -am ‘ldc importado’quinta-feira, 19 de maio de 2011
  • 31. git log mostra o log dos commitsquinta-feira, 19 de maio de 2011
  • 32. git log - exemplos # arquivos criados, renomeados, mudanças.. $ git log --summary --oneline # mostra os commts e a árvore de merges $ git log --oneline --graph --colorquinta-feira, 19 de maio de 2011
  • 33. git config modifica as configurações do repositório e globaisquinta-feira, 19 de maio de 2011
  • 34. git config - exemplo $ git config --list $ git config --global user.name “Adriano Melo” $ git config --global user.email “astm@itautec.cin.ufpe.br”quinta-feira, 19 de maio de 2011
  • 35. git commit - correção # corrige informações do último commit $ git commit --amendquinta-feira, 19 de maio de 2011
  • 36. git init git add git commit git status git log git configquinta-feira, 19 de maio de 2011
  • 37. branches desenvolvimento em paraleloquinta-feira, 19 de maio de 2011
  • 38. ao dar commit...quinta-feira, 19 de maio de 2011
  • 39. depois de alguns commits..quinta-feira, 19 de maio de 2011
  • 40. branch == ponteiroquinta-feira, 19 de maio de 2011
  • 41. novo branch (testing)quinta-feira, 19 de maio de 2011
  • 42. master em uso (HEAD)quinta-feira, 19 de maio de 2011
  • 43. testing em uso (HEAD)quinta-feira, 19 de maio de 2011
  • 44. commit em testingquinta-feira, 19 de maio de 2011
  • 45. usando master novamente...quinta-feira, 19 de maio de 2011
  • 46. commit em masterquinta-feira, 19 de maio de 2011
  • 47. um branch em git é um arquivo que contém 40 caracteres. (SHA-1 checksum do commit que ele aponta)quinta-feira, 19 de maio de 2011
  • 48. quinta-feira, 19 de maio de 2011
  • 49. git branch cria, lista e deleta branchesquinta-feira, 19 de maio de 2011
  • 50. git branch - exemplos $ git branch # listar branches $ git branch dev # criar branch $ git branch -m dev stable # renomear $ git branch -d stable # removerquinta-feira, 19 de maio de 2011
  • 51. git checkout muda para o branch especificadoquinta-feira, 19 de maio de 2011
  • 52. git checkout - exemplo # cria branch ‘experimental’ $ git branch experimental # muda para o branch $ git checkout experimentalquinta-feira, 19 de maio de 2011
  • 53. git checkout - exemplo #2 # mostra os últimos commits $ git log --oneline a5eddf9 correcao na gramatica da divisao, ad50ebf seg fault removido dbb2342 doc changes # vai para o commit dbb2342 $ git checkout dbb2342quinta-feira, 19 de maio de 2011
  • 54. git merge junta dois branchesquinta-feira, 19 de maio de 2011
  • 55. git merge - exemplo $ git checkout -b documentacao $ touch INSTALL $ git add INSTALL $ git commit -m ‘arquivo INSTALL criado’ $ git checkout master $ git merge documentacaoquinta-feira, 19 de maio de 2011
  • 56. git rebase integrar mudanças de uma branch à ultima versão de outraquinta-feira, 19 de maio de 2011
  • 57. quinta-feira, 19 de maio de 2011
  • 58. git rebase - exemplo $ git checkout issue32 # adiciona as mudancas do branch issue32 ao branch master $ git rebase masterquinta-feira, 19 de maio de 2011
  • 59. git branch git checkout git merge git rebasequinta-feira, 19 de maio de 2011
  • 60. remote trabalhando de forma colaborativaquinta-feira, 19 de maio de 2011
  • 61. tarefinha: 1. criar conta no github.com 2. dar fork no repositório: github.com/adrianomelo/c-compiler-in-c/quinta-feira, 19 de maio de 2011
  • 62. git clone “clona” um repositórioquinta-feira, 19 de maio de 2011
  • 63. git clone - exemplo # indo para a pasta do usuário $ cd ~ # clonando o repositório $ git clone https://astm@github.com/astm/c-compiler-in-c.git # indo para a pasta do projeto $ cd c-compiler-in-cquinta-feira, 19 de maio de 2011
  • 64. git push atualiza repositório remoto com as mudanças locaisquinta-feira, 19 de maio de 2011
  • 65. git push - exemplo #1 # forçando uma modificação $ echo “Testando repositorio” >> README $ git commit -am ‘teste de mudanca’ # escrevendo as mudanças no repositório $ git push origin masterquinta-feira, 19 de maio de 2011
  • 66. git push - exemplo #2 # deletando a branch remota issue30 $ git push origin :issue30 # associar um branch local a um remoto $ git checkout -b issue32tryfix $ git checkout --track origin/issue32 $ git push origin issue32quinta-feira, 19 de maio de 2011
  • 67. git fetch atualiza o branch remoto especificadoquinta-feira, 19 de maio de 2011
  • 68. git fetch - exemplo #1 # clonando o repositório c-compiler-in-c $ git clone https://astm@github.com/astm/c-compiler-in-c.git # atualizando o branch origin/master $ git fetch origin # merge o origin/master com o master $ git merge origin/masterquinta-feira, 19 de maio de 2011
  • 69. git fetch - exemplo #2 # $P = prefixo, $L = repositório $ P=git://git.kernel.org/pub/scm/ $ L=linux/kernel/git/stable/linux-2.6.35.y.git # clonando o repositório 2.6.35 do kernel $ git clone $P$L # depois de algumas horas..... $ git fetch origin master # mudanças realizadas, comparando com HEAD $ git diff FETCH_HEAD..HEAD # diferença dos dois últimos commits.. $ git diff FETCH_HEAD..FETCH_HEADˆquinta-feira, 19 de maio de 2011
  • 70. outros comandos..quinta-feira, 19 de maio de 2011
  • 71. git bisect faz uma busca binária para achar o commit que um bug foi introduzido (regressão)quinta-feira, 19 de maio de 2011
  • 72. git bisect - exemplo $ git bisect start $ git bisect bad $ git bisect good v2.6.13-rc2 Bisecting: 675 revisions left to test after this $ git bisect good Bisecting: 337 revisions left to test after this $ git bisect resetquinta-feira, 19 de maio de 2011
  • 73. git reset limpa o HEAD para o estado especificadoquinta-feira, 19 de maio de 2011
  • 74. git reset - exemplo $ touch gui.java $ git add gui.java $ git resetquinta-feira, 19 de maio de 2011
  • 75. site: cinlug-br.org twitter: twitter.com/cinlug lista: http://groups.google.com/group/cinlug/quinta-feira, 19 de maio de 2011