git 101

702 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
702
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

git 101

  1. 1. git 1quinta-feira, 19 de maio de 2011
  2. 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. 3. quem usa? 3quinta-feira, 19 de maio de 2011
  4. 4. fedora debian gnome perl linux kernel RoR android Itautec (new) Qt facebook VLC INdT 4quinta-feira, 19 de maio de 2011
  5. 5. linux kernel alguns números... 5quinta-feira, 19 de maio de 2011
  6. 6. 6quinta-feira, 19 de maio de 2011
  7. 7. 7quinta-feira, 19 de maio de 2011
  8. 8. 8quinta-feira, 19 de maio de 2011
  9. 9. 9quinta-feira, 19 de maio de 2011
  10. 10. característicasquinta-feira, 19 de maio de 2011
  11. 11. rápido 11quinta-feira, 19 de maio de 2011
  12. 12. simples 12quinta-feira, 19 de maio de 2011
  13. 13. escalável 13quinta-feira, 19 de maio de 2011
  14. 14. distribuído 14quinta-feira, 19 de maio de 2011
  15. 15. local centralizado distribuído 15quinta-feira, 19 de maio de 2011
  16. 16. local 16quinta-feira, 19 de maio de 2011
  17. 17. centralizado 17quinta-feira, 19 de maio de 2011
  18. 18. distribuído 18quinta-feira, 19 de maio de 2011
  19. 19. git 101quinta-feira, 19 de maio de 2011
  20. 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. 21. git init cria um repositório ou reinicia um existentequinta-feira, 19 de maio de 2011
  22. 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. 23. git status mostra o status da pasta de trabalhoquinta-feira, 19 de maio de 2011
  24. 24. quinta-feira, 19 de maio de 2011
  25. 25. git add adiciona arquivos ao indexquinta-feira, 19 de maio de 2011
  26. 26. git add - exemplo #1 # cria arquivo README $ touch README # o adiciona ao index $ git add READMEquinta-feira, 19 de maio de 2011
  27. 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. 28. git rm remove o arquivo da árvore de trabalho e do indexquinta-feira, 19 de maio de 2011
  29. 29. git commit grava as mudanças no repositórioquinta-feira, 19 de maio de 2011
  30. 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. 31. git log mostra o log dos commitsquinta-feira, 19 de maio de 2011
  32. 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. 33. git config modifica as configurações do repositório e globaisquinta-feira, 19 de maio de 2011
  34. 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. 35. git commit - correção # corrige informações do último commit $ git commit --amendquinta-feira, 19 de maio de 2011
  36. 36. git init git add git commit git status git log git configquinta-feira, 19 de maio de 2011
  37. 37. branches desenvolvimento em paraleloquinta-feira, 19 de maio de 2011
  38. 38. ao dar commit...quinta-feira, 19 de maio de 2011
  39. 39. depois de alguns commits..quinta-feira, 19 de maio de 2011
  40. 40. branch == ponteiroquinta-feira, 19 de maio de 2011
  41. 41. novo branch (testing)quinta-feira, 19 de maio de 2011
  42. 42. master em uso (HEAD)quinta-feira, 19 de maio de 2011
  43. 43. testing em uso (HEAD)quinta-feira, 19 de maio de 2011
  44. 44. commit em testingquinta-feira, 19 de maio de 2011
  45. 45. usando master novamente...quinta-feira, 19 de maio de 2011
  46. 46. commit em masterquinta-feira, 19 de maio de 2011
  47. 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. 48. quinta-feira, 19 de maio de 2011
  49. 49. git branch cria, lista e deleta branchesquinta-feira, 19 de maio de 2011
  50. 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. 51. git checkout muda para o branch especificadoquinta-feira, 19 de maio de 2011
  52. 52. git checkout - exemplo # cria branch ‘experimental’ $ git branch experimental # muda para o branch $ git checkout experimentalquinta-feira, 19 de maio de 2011
  53. 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. 54. git merge junta dois branchesquinta-feira, 19 de maio de 2011
  55. 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. 56. git rebase integrar mudanças de uma branch à ultima versão de outraquinta-feira, 19 de maio de 2011
  57. 57. quinta-feira, 19 de maio de 2011
  58. 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. 59. git branch git checkout git merge git rebasequinta-feira, 19 de maio de 2011
  60. 60. remote trabalhando de forma colaborativaquinta-feira, 19 de maio de 2011
  61. 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. 62. git clone “clona” um repositórioquinta-feira, 19 de maio de 2011
  63. 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. 64. git push atualiza repositório remoto com as mudanças locaisquinta-feira, 19 de maio de 2011
  65. 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. 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. 67. git fetch atualiza o branch remoto especificadoquinta-feira, 19 de maio de 2011
  68. 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. 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. 70. outros comandos..quinta-feira, 19 de maio de 2011
  71. 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. 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. 73. git reset limpa o HEAD para o estado especificadoquinta-feira, 19 de maio de 2011
  74. 74. git reset - exemplo $ touch gui.java $ git add gui.java $ git resetquinta-feira, 19 de maio de 2011
  75. 75. site: cinlug-br.org twitter: twitter.com/cinlug lista: http://groups.google.com/group/cinlug/quinta-feira, 19 de maio de 2011

×