Mini-curso de git -- SECOMP-UFS

1,800 views

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,800
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
66
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Mini-curso de git -- SECOMP-UFS

  1. 1. Controle de Vers˜o com git a Felipe Oliveira Carvalho Universidade Federal de Sergipe 6 de Outubro, 20111 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  2. 2. 1 Introdu¸˜o ca O que ´ controle de vers˜o? e a O que ´ git? e 2 Introdu¸˜o ao git ca Primeiros passos Reposit´rios o Workflow b´sico a Obtendo ajuda Visualizando o hist´rico do reposit´rio o o 3 Branching e Merging Armazenamento de commits Branches Desenvolvimento n˜o-linear a Resolvendo conflitos de merge 4 git no servidor Introdu¸˜o ca Trabalhando em grupo 5 Extras2 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  3. 3. Introdu¸˜o – O que ´ controle de vers˜o? ca e a O que ´ controle de vers˜o? e a Controle de vers˜o ´ um sistema que grava as mudan¸as feitas em a e c um conjunto de arquivos ao longo do tempo de uma forma que vocˆ possa restaurar e comparar vers˜es espec´ e o ıficas depois.3 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  4. 4. Introdu¸˜o – O que ´ controle de vers˜o? ca e a O que ´ controle de vers˜o? e a Controle de vers˜o ´ um sistema que grava as mudan¸as feitas em a e c um conjunto de arquivos ao longo do tempo de uma forma que vocˆ possa restaurar e comparar vers˜es espec´ e o ıficas depois. Tipos de controle de vers˜o: a Controle de vers˜o local a Controle de vers˜o centralizado a Controle de vers˜o distribu´ a ıdo3 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  5. 5. Introdu¸˜o – O que ´ controle de vers˜o? ca e a Controle de vers˜o local a4 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  6. 6. Introdu¸˜o – O que ´ controle de vers˜o? ca e a Controle de vers˜o centralizado a5 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  7. 7. Introdu¸˜o – O que ´ controle de vers˜o? ca e a Controle de vers˜o distribu´ a ıdo6 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  8. 8. Introdu¸˜o – O que ´ git? ca e O que ´ git? e Git ´ um sistema de controle de e vers˜o distribu´ projetado para a ıdo ser eficiente.7 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  9. 9. Introdu¸˜o – O que ´ git? ca e Breve hist´ria o Criado por Linus Torvalds em 2005 Para ser usado no desenvolvimento do Linux kernel Metas dos projeto: Velocidade Design simples Permitir desenvolvimento n˜o-linear (milhares de branches) a Capaz de manipular projetos grandes como o Linux kernel de maneira eficiente8 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  10. 10. 1 Introdu¸˜o ca O que ´ controle de vers˜o? e a O que ´ git? e 2 Introdu¸˜o ao git ca Primeiros passos Reposit´rios o Workflow b´sico a Obtendo ajuda Visualizando o hist´rico do reposit´rio o o 3 Branching e Merging Armazenamento de commits Branches Desenvolvimento n˜o-linear a Resolvendo conflitos de merge 4 git no servidor Introdu¸˜o ca Trabalhando em grupo 5 Extras9 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  11. 11. Introdu¸˜o ao git – Primeiros passos ca Instala¸˜o ca http://git-scm.com10 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  12. 12. Introdu¸˜o ao git – Primeiros passos ca Configurando $ git config --global user.name "Felipe O. Carvalho" $ git config --global user.email "felipekde@gmail.com"11 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  13. 13. Introdu¸˜o ao git – Reposit´rios ca o Criando um reposit´rio o git init $ mkdir hello_git $ cd hello_git/ $ git init Initialized empty Git repository in /home/felipe/hello_git/ $ ls -a . .. .git12 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  14. 14. Introdu¸˜o ao git – Reposit´rios ca o Primeiro commit git add git commit $ touch hello_world.py $ git add hello_world.py $ git commit -m "Primeiro commit"13 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  15. 15. Introdu¸˜o ao git – Reposit´rios ca o Primeiro commit $ git show14 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  16. 16. Introdu¸˜o ao git – Reposit´rios ca o Primeiro commit $ git show commit 9b302737d41712809ca455b1d522c334793ef001 Author: Felipe Oliveira Carvalho <felipekde@gmail.com> Date: Sun Oct 2 15:45:23 2011 -0300 Primeiro commit diff --git a/hello_world.py b/hello_world.py new file mode 100644 index 0000000..e69de2914 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  17. 17. Introdu¸˜o ao git – Reposit´rios ca o Clonando um Reposit´rio o git clone $ git clone git://github.com/schacon/ticgit.git15 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  18. 18. Introdu¸˜o ao git – Reposit´rios ca o Clonando um Reposit´rio o git clone $ git clone git://github.com/schacon/ticgit.git Cloning into ticgit... remote: Counting objects: 1857, done. remote: Compressing objects: 100% (826/826), done. remote: Total 1857 (delta 969), reused 1796 (delta 931) Receiving objects: 100% (1857/1857), 269.46 KiB | 143 KiB/s, done. Resolving deltas: 100% (969/969), done.15 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  19. 19. Introdu¸˜o ao git – Reposit´rios ca o Clonando um Reposit´rio o git clone $ git clone git://github.com/schacon/ticgit.git Cloning into ticgit... remote: Counting objects: 1857, done. remote: Compressing objects: 100% (826/826), done. remote: Total 1857 (delta 969), reused 1796 (delta 931) Receiving objects: 100% (1857/1857), 269.46 KiB | 143 KiB/s, done. Resolving deltas: 100% (969/969), done. $ cd ticgit15 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  20. 20. Introdu¸˜o ao git – Reposit´rios ca o Clonando um Reposit´rio o git clone $ git clone git://github.com/schacon/ticgit.git Cloning into ticgit... remote: Counting objects: 1857, done. remote: Compressing objects: 100% (826/826), done. remote: Total 1857 (delta 969), reused 1796 (delta 931) Receiving objects: 100% (1857/1857), 269.46 KiB | 143 KiB/s, done. Resolving deltas: 100% (969/969), done. $ cd ticgit $ ls15 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  21. 21. Introdu¸˜o ao git – Reposit´rios ca o Clonando um Reposit´rio o git clone $ git clone git://github.com/schacon/ticgit.git Cloning into ticgit... remote: Counting objects: 1857, done. remote: Compressing objects: 100% (826/826), done. remote: Total 1857 (delta 969), reused 1796 (delta 931) Receiving objects: 100% (1857/1857), 269.46 KiB | 143 KiB/s, done. Resolving deltas: 100% (969/969), done. $ cd ticgit $ ls bin examples lib LICENSE_GPL LICENSE_MIT note Rakefile README.mkd spec ticgit-ng.gemspec TODO15 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  22. 22. Introdu¸˜o ao git – Reposit´rios ca o gitk16 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  23. 23. Introdu¸˜o ao git – Workflow b´sico ca a Workflow b´sico a Editar arquivos17 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  24. 24. Introdu¸˜o ao git – Workflow b´sico ca a Workflow b´sico a Editar arquivos – Eclipse, Visual Studio, Notepad++, emacs, vim... Photoshop...17 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  25. 25. Introdu¸˜o ao git – Workflow b´sico ca a Workflow b´sico a Editar arquivos – Eclipse, Visual Studio, Notepad++, emacs, vim... Photoshop... Adicionar as mudan¸as ao index (tamb´m conhecido como staging c e area17 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  26. 26. Introdu¸˜o ao git – Workflow b´sico ca a Workflow b´sico a Editar arquivos – Eclipse, Visual Studio, Notepad++, emacs, vim... Photoshop... Adicionar as mudan¸as ao index (tamb´m conhecido como staging c e area – git add, git rm, git reset...17 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  27. 27. Introdu¸˜o ao git – Workflow b´sico ca a Workflow b´sico a Editar arquivos – Eclipse, Visual Studio, Notepad++, emacs, vim... Photoshop... Adicionar as mudan¸as ao index (tamb´m conhecido como staging c e area – git add, git rm, git reset... Revisar as mudan¸as – git status, git diff... c17 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  28. 28. Introdu¸˜o ao git – Workflow b´sico ca a Workflow b´sico a Editar arquivos – Eclipse, Visual Studio, Notepad++, emacs, vim... Photoshop... Adicionar as mudan¸as ao index (tamb´m conhecido como staging c e area – git add, git rm, git reset... Revisar as mudan¸as – git status, git diff... c Fazer o commit das mudan¸as – git commit -m ”Mensagem” c17 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  29. 29. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e18 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  30. 30. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ vim hello_world.py19 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  31. 31. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ vim hello_world.py $ cat hello_world.py print "Hell World!"19 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  32. 32. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ vim hello_world.py $ cat hello_world.py print "Hell World!" $ git status19 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  33. 33. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ vim hello_world.py $ cat hello_world.py print "Hell World!" $ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: hello_world.py # no changes added to commit (use "git add" and/or "git commit -a")19 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  34. 34. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e Vocˆ tem que adicionar o arquivo ao e index depois de edit´-lo e/ou cri´-lo. a a20 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  35. 35. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e working directory git add staging area (index) git commit git directory (repository)21 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  36. 36. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ git add hello_world.py22 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  37. 37. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ git add hello_world.py $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.py #22 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  38. 38. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ git add hello_world.py $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.py # $ git commit -m "Hello World em Python"22 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  39. 39. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ git add hello_world.py $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.py # $ git commit -m "Hello World em Python" [master e3d5175] Hello World em Python 1 files changed, 1 insertions(+), 0 deletions(-)22 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  40. 40. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ git add hello_world.py $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.py # $ git commit -m "Hello World em Python" [master e3d5175] Hello World em Python 1 files changed, 1 insertions(+), 0 deletions(-) $ git status # On branch master nothing to commit (working directory clean)22 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  41. 41. Introdu¸˜o ao git – Workflow b´sico ca a Os trˆs passos e $ git log commit e3d5175ca59febe510b1e0689040d2702b08c7ee Author: Felipe Oliveira Carvalho <felipekde@gmail.com> Date: Sun Oct 2 17:36:41 2011 -0300 Hello World em Python commit 9b302737d41712809ca455b1d522c334793ef001 Author: Felipe Oliveira Carvalho <felipekde@gmail.com> Date: Sun Oct 2 15:45:23 2011 -0300 Primeiro commit23 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  42. 42. Introdu¸˜o ao git – Workflow b´sico ca a Comandos vistos at´ agora e git config Utilit´rio de configura¸˜o a ca24 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  43. 43. Introdu¸˜o ao git – Workflow b´sico ca a Comandos vistos at´ agora e git config Utilit´rio de configura¸˜o a ca git init Cria um novo reposit´rio o git clone Clona um reposit´rio existente o24 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  44. 44. Introdu¸˜o ao git – Workflow b´sico ca a Comandos vistos at´ agora e git config Utilit´rio de configura¸˜o a ca git init Cria um novo reposit´rio o git clone Clona um reposit´rio existente o git status Mostra o estado do diret´rio de trabalho e index o24 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  45. 45. Introdu¸˜o ao git – Workflow b´sico ca a Comandos vistos at´ agora e git config Utilit´rio de configura¸˜o a ca git init Cria um novo reposit´rio o git clone Clona um reposit´rio existente o git status Mostra o estado do diret´rio de trabalho e index o git add Adiciona arquivos ao index git commit Faz o commit das mudan¸as no index c git show Mostra detalhes do ultimo commit ´24 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  46. 46. Introdu¸˜o ao git – Workflow b´sico ca a Comandos vistos at´ agora e git config Utilit´rio de configura¸˜o a ca git init Cria um novo reposit´rio o git clone Clona um reposit´rio existente o git status Mostra o estado do diret´rio de trabalho e index o git add Adiciona arquivos ao index git commit Faz o commit das mudan¸as no index c git show Mostra detalhes do ultimo commit ´ git log Lista os commits24 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  47. 47. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged25 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  48. 48. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ git status # On branch master nothing to commit (working directory clean)26 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  49. 49. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ git status # On branch master nothing to commit (working directory clean) $ vim README26 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  50. 50. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ git status # On branch master nothing to commit (working directory clean) $ vim README Untracked $ git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be com # # README nothing added to commit but untracked files present (use "g26 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  51. 51. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ git add README27 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  52. 52. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ git add README Staged $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: README #27 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  53. 53. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ vim hello_git.py28 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  54. 54. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ vim hello_git.py Staged, Modified $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: README # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: hello_world.py #28 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  55. 55. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ git add hello_world.py29 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  56. 56. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ git add hello_world.py Staged $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: README # modified: hello_world.py #29 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  57. 57. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ git commit -m "README e mudan¸as no Hello World" c [master 2b32cb9] README e mudan¸as no Hello World c 1 files changed, 1 insertions(+), 1 deletions(-) create mode 100644 README30 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  58. 58. Introdu¸˜o ao git – Workflow b´sico ca a Untracked, Unmodified, Modified e Staged $ git commit -m "README e mudan¸as no Hello World" c [master 2b32cb9] README e mudan¸as no Hello World c 1 files changed, 1 insertions(+), 1 deletions(-) create mode 100644 README Unmodified $ git status # On branch master nothing to commit (working directory clean)30 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  59. 59. Introdu¸˜o ao git – Workflow b´sico ca a Visualizando modifica¸˜es co $ vim hello_world.py31 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  60. 60. Introdu¸˜o ao git – Workflow b´sico ca a Visualizando modifica¸˜es co $ vim hello_world.py $ git status [...] $ git diff [...] $ git add hello_world.py $ git status [...] $ git diff --staged [...]31 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  61. 61. Introdu¸˜o ao git – Workflow b´sico ca a Removendo arquivos $ rm README32 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  62. 62. Introdu¸˜o ao git – Workflow b´sico ca a Removendo arquivos $ rm README $ git status # On branch master # Changes not staged for commit: # (use "git add/rm <file>..." to update what will be comm # (use "git checkout -- <file>..." to discard changes in # # deleted: README # no changes added to commit (use "git add" and/or "git commi32 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  63. 63. Introdu¸˜o ao git – Workflow b´sico ca a Removendo arquivos $ git rm README rm ’README’33 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  64. 64. Introdu¸˜o ao git – Workflow b´sico ca a Removendo arquivos $ git rm README rm ’README’ $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: README #33 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  65. 65. Introdu¸˜o ao git – Workflow b´sico ca a Removendo arquivos $ git rm README rm ’README’ $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: README # $ git commit -m "Removi o README" [master b09a767] Removi o README 0 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 README33 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  66. 66. Introdu¸˜o ao git – Obtendo ajuda ca Obtendo ajuda $ git help <verb> $ git <verb> --help $ man git-<verb> $ git <verb> -h $ git commit -h usage: git commit [options] [--] <filepattern>... -q, --quiet suppress summary after successful commit -v, --verbose show diff in commit message template Commit message options -F, --file <file> read message from file --author <author> override author for commit --date <date> override date for commit -m, --message <message> commit message -c, --reedit-message <commit> reuse and edit message from specified commit -C, --reuse-message <commit> reuse message from specified commit --fixup <commit> use autosquash formatted message to fixup specified commit --squash <commit> use autosquash formatted message to squash specified commit --reset-author the commit is authored by me now (used with -C-c/--amend) -s, --signoff add Signed-off-by: -t, --template <file>34 / 76 use specified template file Felipe Oliveira Carvalho Controle de Vers˜o com git a
  67. 67. Introdu¸˜o ao git – Visualizando o hist´rico do reposit´rio ca o o git log $ git log commit b09a76779af9257ccd69c1fc5aac3e1dd0d03693 Author: Felipe Oliveira Carvalho <felipekde@gmail.com> Date: Sun Oct 2 22:41:32 2011 -0300 Removi o README commit 2b32cb93b49dbd87b2387f21ee3b945b4c822fbf Author: Felipe Oliveira Carvalho <felipekde@gmail.com> Date: Sun Oct 2 22:25:23 2011 -0300 README e mudan¸as no Hello World c commit e3d5175ca59febe510b1e0689040d2702b08c7ee Author: Felipe Oliveira Carvalho <felipekde@gmail.com> Date: Sun Oct 2 17:36:41 2011 -0300 Hello World em Python commit 9b302737d41712809ca455b1d522c334793ef001 Author: Felipe Oliveira Carvalho <felipekde@gmail.com> Date: Sun Oct 2 15:45:23 2011 -0300 Primeiro commit35 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  68. 68. Introdu¸˜o ao git – Visualizando o hist´rico do reposit´rio ca o o Visualizando um commit $ git show 2b32cb93 commit 2b32cb93b49dbd87b2387f21ee3b945b4c822fbf Author: Felipe Oliveira Carvalho <felipekde@gmail.com> Date: Sun Oct 2 22:25:23 2011 -0300 README e mudan¸as no Hello World c diff --git a/README b/README new file mode 100644 index 0000000..e69de29 diff --git a/hello_world.py b/hello_world.py index 088ea5c..ffee107 100644 --- a/hello_world.py +++ b/hello_world.py @@ -1 +1 @@36 / 76 -print "Hell World!" Carvalho Felipe Oliveira Controle de Vers˜o com git a
  69. 69. Introdu¸˜o ao git – Visualizando o hist´rico do reposit´rio ca o o gitk $ gitk &37 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  70. 70. 1 Introdu¸˜o ca O que ´ controle de vers˜o? e a O que ´ git? e 2 Introdu¸˜o ao git ca Primeiros passos Reposit´rios o Workflow b´sico a Obtendo ajuda Visualizando o hist´rico do reposit´rio o o 3 Branching e Merging Armazenamento de commits Branches Desenvolvimento n˜o-linear a Resolvendo conflitos de merge 4 git no servidor Introdu¸˜o ca Trabalhando em grupo 5 Extras38 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  71. 71. Branching e Merging – Armazenamento de commits Armazenamento de commits39 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  72. 72. Branching e Merging – Branches Branches40 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  73. 73. Branching e Merging – Branches Criando um novo branch – branching $ git branch testing41 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  74. 74. Branching e Merging – Branches Selecionando um branch $ git checkout testing42 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  75. 75. Branching e Merging – Branches branch + checkout em um unico co- ´ mando $ git checkout -b testing Switched to a new branch ’testing’43 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  76. 76. Branching e Merging – Branches Editando o novo branch $ vim test.py $ git add test.py $ git commit -m "Teste"44 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  77. 77. 45 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  78. 78. Branching e Merging – Branches Merge simples – Fast-forward $ git checkout master Switched to branch ’master’46 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  79. 79. Branching e Merging – Branches Merge simples – Fast-forward $ git checkout master Switched to branch ’master’ $ git branch * master testing46 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  80. 80. Branching e Merging – Branches Merge simples – Fast-forward $ git checkout master Switched to branch ’master’ $ git branch * master testing $ git merge testing Updating b09a767..cc68299 Fast-forward test.py | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 test.py46 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  81. 81. 47 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  82. 82. Branching e Merging – Desenvolvimento n˜o-linear a Um exemplo Clone o c´digo que est´ na produ¸˜o o a ca Crie um branch para issue #53 (‘iss53’) Trabalhe por 10 minutos Algu´m pede um hotfix para a issue #102 e checkout ‘master’ Crie o branch ‘iss102’ Resolva o problema checkout ‘master‘, merge ‘iss102’ push para a vers˜o p´blica a u checkout ‘iss53’ e continue trabalhando48 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  83. 83. Branching e Merging – Desenvolvimento n˜o-linear a Mais situa¸˜es co Isolar unidades de trabalho49 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  84. 84. Branching e Merging – Desenvolvimento n˜o-linear a Mais situa¸˜es co Vocˆ quer experimentar alguma e ideia50 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  85. 85. Branching e Merging – Desenvolvimento n˜o-linear a Mais situa¸˜es co Vocˆ vai fazer algo que vai demorar e51 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  86. 86. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo Resolva a issue 53. Crie um branch para isso a partir do master:52 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  87. 87. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo Resolva a issue 53. Crie um branch para isso a partir do master: $ git checkout -b iss53 Switched to a new branch ’iss53’52 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  88. 88. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo Resolva a issue 53. Crie um branch para isso a partir do master: $ git checkout -b iss53 Switched to a new branch ’iss53’52 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  89. 89. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo Resolva a issue 53. Crie um branch para isso a partir do master: $ git checkout -b iss53 Switched to a new branch ’iss53’ Corrija o problema no c´digo: o $ vim hello_world.py52 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  90. 90. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo $ git diff diff --git a/hello_world.py b/hello_world.py index ffee107..349aa41 100644 --- a/hello_world.py +++ b/hello_world.py @@ -1 +1 @@ -print "Al^ mundo!" o +print "Al^, mundo!" o53 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  91. 91. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo commit das mudan¸as feitas: c $ git commit -a -m "V´rgula adicionada [iss53]" ı [iss53 63f9671] V´rgula adicionada [iss53] ı 1 files changed, 1 insertions(+), 1 deletions(-)54 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  92. 92. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo commit das mudan¸as feitas: c $ git commit -a -m "V´rgula adicionada [iss53]" ı [iss53 63f9671] V´rgula adicionada [iss53] ı 1 files changed, 1 insertions(+), 1 deletions(-)54 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  93. 93. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo Uma feature tem que ser implementada agora! Fa¸a checkout do c master, pois a nova feature vai ser implementada a partir do c´digo est´vel: supostamente o c´digo no branch master. o a o $ git checkout master Switched to branch ’master’55 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  94. 94. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo Uma feature tem que ser implementada agora! Fa¸a checkout do c master, pois a nova feature vai ser implementada a partir do c´digo est´vel: supostamente o c´digo no branch master. o a o $ git checkout master Switched to branch ’master’ Crie um novo branch – bomdia – para implementar a nova feature: $ git checkout -b bomdia Switched to a new branch ’bomdia’55 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  95. 95. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo Uma feature tem que ser implementada agora! Fa¸a checkout do c master, pois a nova feature vai ser implementada a partir do c´digo est´vel: supostamente o c´digo no branch master. o a o $ git checkout master Switched to branch ’master’ Crie um novo branch – bomdia – para implementar a nova feature: $ git checkout -b bomdia Switched to a new branch ’bomdia’ $ vim bom_dia.py55 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  96. 96. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo $ git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be com # # bom_dia.py nothing added to commit but untracked files present (use "g56 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  97. 97. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo $ git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be com # # bom_dia.py nothing added to commit but untracked files present (use "g $ git add bom_dia.py56 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  98. 98. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo $ git diff --staged diff --git a/bom_dia.py b/bom_dia.py new file mode 100644 index 0000000..b62bb76 --- /dev/null +++ b/bom_dia.py @@ -0,0 +1 @@ +print "Bom dia!"57 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  99. 99. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo commit do ”bom dia”:58 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  100. 100. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo commit do ”bom dia”: $ git commit -a # use o editor para inserir a mensagem [master cf9146f] Nova feature: script que diz "bom dia" 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 bom_dia.py58 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  101. 101. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo commit do ”bom dia”: $ git commit -a # use o editor para inserir a mensagem [master cf9146f] Nova feature: script que diz "bom dia" 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 bom_dia.py58 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  102. 102. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo Adicionando mudan¸as ao branch branch master. c59 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  103. 103. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo Adicionando mudan¸as ao branch branch master. c $ git checkout master $ git merge bomdia Updating cc68299..296d018 Fast-forward bom_dia.py | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 bom_dia.py59 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  104. 104. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo60 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  105. 105. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo O merge j´ foi feito, ent˜o vocˆ pode deletar o branch bomdia. a a e master cont´m o c´digo com a feature que foi solicitada. Ent˜o e o a esse c´digo pode ser enviado para a produ¸˜o (ou n˜o). o ca a61 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  106. 106. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo O merge j´ foi feito, ent˜o vocˆ pode deletar o branch bomdia. a a e master cont´m o c´digo com a feature que foi solicitada. Ent˜o e o a esse c´digo pode ser enviado para a produ¸˜o (ou n˜o). o ca a $ git branch -d bomdia Deleted branch bomdia (was 296d018).61 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  107. 107. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo O merge j´ foi feito, ent˜o vocˆ pode deletar o branch bomdia. a a e master cont´m o c´digo com a feature que foi solicitada. Ent˜o e o a esse c´digo pode ser enviado para a produ¸˜o (ou n˜o). o ca a $ git branch -d bomdia Deleted branch bomdia (was 296d018). E agora vocˆ pode continuar a trabalhar na resulu¸˜o da issue #53. e ca61 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  108. 108. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo O merge j´ foi feito, ent˜o vocˆ pode deletar o branch bomdia. a a e master cont´m o c´digo com a feature que foi solicitada. Ent˜o e o a esse c´digo pode ser enviado para a produ¸˜o (ou n˜o). o ca a $ git branch -d bomdia Deleted branch bomdia (was 296d018). E agora vocˆ pode continuar a trabalhar na resulu¸˜o da issue #53. e ca $ git checkout iss53 Switched to branch ’iss53’61 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  109. 109. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo62 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  110. 110. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo $ vim hello_world.py $ git commit -a -m "mundo => Mundo" [iss53 e4c9096] mundo => Mundo 1 files changed, 1 insertions(+), 1 deletions(-)62 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  111. 111. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo $ vim hello_world.py $ git commit -a -m "mundo => Mundo" [iss53 e4c9096] mundo => Mundo 1 files changed, 1 insertions(+), 1 deletions(-)62 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  112. 112. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo merge iss53 com o master. $ git checkout master Switched to branch ’master’ $ git merge iss53 Merge made by recursive. hello_world.py | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)63 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  113. 113. Branching e Merging – Desenvolvimento n˜o-linear a Passo-a-passo do exemplo64 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  114. 114. 65 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  115. 115. $ git merge umbranch Auto-merging hello_world.py CONFLICT (content): Merge conflict in hello_world.py Automatic merge failed; fix conflicts and then commit the r66 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  116. 116. $ git merge umbranch Auto-merging hello_world.py CONFLICT (content): Merge conflict in hello_world.py Automatic merge failed; fix conflicts and then commit the r $ cat hello_world.py <<<<<<< HEAD print "Al^, Mundo!" # Imprime Al^, Mundo o o ======= print "Al^, Mundo!" # LOL o >>>>>>> umbranch66 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  117. 117. 1 Introdu¸˜o ca O que ´ controle de vers˜o? e a O que ´ git? e 2 Introdu¸˜o ao git ca Primeiros passos Reposit´rios o Workflow b´sico a Obtendo ajuda Visualizando o hist´rico do reposit´rio o o 3 Branching e Merging Armazenamento de commits Branches Desenvolvimento n˜o-linear a Resolvendo conflitos de merge 4 git no servidor Introdu¸˜o ca Trabalhando em grupo 5 Extras67 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  118. 118. git no servidor – Introdu¸˜o ca Criando um projeto no servidor $ git clone --bare my_project my_project.git Initialized empty Git repository in /opt/projects/my_projec68 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  119. 119. git no servidor – Introdu¸˜o ca Criando um projeto no servidor $ git clone --bare my_project my_project.git Initialized empty Git repository in /opt/projects/my_projec $ scp -r my_project.git user@git.example.com:/opt/git68 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  120. 120. git no servidor – Introdu¸˜o ca Criando um projeto no servidor $ git clone --bare my_project my_project.git Initialized empty Git repository in /opt/projects/my_projec $ scp -r my_project.git user@git.example.com:/opt/git Outro usu´rio clona o reposit´rio a o $ git clone user@git.example.com:/opt/git/my_project.git68 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  121. 121. git no servidor – Introdu¸˜o ca Criando um projeto no servidor $ git clone --bare my_project my_project.git Initialized empty Git repository in /opt/projects/my_projec $ scp -r my_project.git user@git.example.com:/opt/git Outro usu´rio clona o reposit´rio a o $ git clone user@git.example.com:/opt/git/my_project.git $ ssh user@git.example.com $ cd /opt/git/my_project.git $ git init --bare --shared68 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  122. 122. Outros usu´rios podem enviar as mudan¸as para o reposit´rio no a c o servidor. $ vim README $ git commit -am ’fix for the README file’ $ git push origin master69 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  123. 123. git no servidor – Introdu¸˜o ca github http://github.com70 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  124. 124. git no servidor – Trabalhando em grupo Workflow b´sico a Usu´rio clona o reposit´rio remoto com git clone e trabalha a o localmente.71 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  125. 125. git no servidor – Trabalhando em grupo Workflow b´sico a Usu´rio clona o reposit´rio remoto com git clone e trabalha a o localmente. $ vim TODO $ git commit -a71 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  126. 126. git no servidor – Trabalhando em grupo Workflow b´sico a Usu´rio clona o reposit´rio remoto com git clone e trabalha a o localmente. $ vim TODO $ git commit -a Usu´rio quer enviar suas mudan¸as para o servidor: a c $ git fetch origin $ git merge origin/master $ git push71 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  127. 127. git no servidor – Trabalhando em grupo git pull git pull = fetch + merge72 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  128. 128. Extras Comandos uteis ´ git blame73 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  129. 129. Extras Comandos uteis ´ git blame git grep73 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  130. 130. Extras Comandos uteis ´ git blame git grep git cherry-pick73 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  131. 131. Extras Comandos uteis ´ git blame git grep git cherry-pick git stash73 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  132. 132. git stash save74 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  133. 133. git stash save list74 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  134. 134. git stash save list drop74 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  135. 135. git stash save list drop pop74 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  136. 136. git stash save list drop pop apply74 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  137. 137. Extras Pro Git http://progit.org75 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a
  138. 138. Mais perguntas Mais perguntas? Mais perguntas?76 / 76 Felipe Oliveira Carvalho Controle de Vers˜o com git a

×