Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012

  • Published on
    19-Jan-2015

  • View
    416

  • Download
    0

Embed Size (px)

DESCRIPTION

Apresentada em 30/11/12 na PHP Conference Brasil 2012. Na palestra voc ver uma introduo aos sistemas de controle de verso, passando pelos modelos centralizado e distribudo. Um pouco da histria do git, a instalao e GUIs para Mac, Linux e Windows. As configuraes e o fluxo bsico para o dia a dia. Alm de alguns comandos e dicas que ajudaro no dia a dia com o git, inclusive para quem j usa o git no seu dia a dia

Transcript

  • 1. Git para iniciantessbado, 15 de dezembro de 2012

2. Git para iniciantes1.3.0sbado, 15 de dezembro de 2012 3. Mauro... quem?sbado, 15 de dezembro de 2012 4. Mauro... quem?sbado, 15 de dezembro de 2012 5. Mauro... quem?sbado, 15 de dezembro de 2012 6. sbado, 15 de dezembro de 2012 7. sbado, 15 de dezembro de 2012 8. Mauro Georgehttp://maurogeorge.github.comhttp://www.aprenderphp.com.br@maurogeorgesbado, 15 de dezembro de 2012 9. Sistemas de controle de verso VCS (Version control systems)sbado, 15 de dezembro de 2012 10. Pra que?sbado, 15 de dezembro de 2012 11. Pra que? Gerenciar diferentes verses de um arquivosbado, 15 de dezembro de 2012 12. Pra que? Guardar histrico de alteraes de um arquivosbado, 15 de dezembro de 2012 13. Pra que? Saber quem fez e o porqu de cada alteraosbado, 15 de dezembro de 2012 14. Vantagenssbado, 15 de dezembro de 2012 15. Vantagens Backup automticosbado, 15 de dezembro de 2012 16. Vantagens Controle do histricosbado, 15 de dezembro de 2012 17. Vantagens Trabalho em equipesbado, 15 de dezembro de 2012 18. Vantagens Marcao e resgate de verses estveissbado, 15 de dezembro de 2012 19. Vantagens Ramicao do projetosbado, 15 de dezembro de 2012 20. Diferentes modelossbado, 15 de dezembro de 2012 21. Centralizadosbado, 15 de dezembro de 2012 22. Centralizado Necessita de um servidor centralsbado, 15 de dezembro de 2012 23. Centralizado O checkout uma cpia da estrutura dos arquivos do repositriosbado, 15 de dezembro de 2012 24. Centralizado Somente usurios autorizados podem fazer commitssbado, 15 de dezembro de 2012 25. Centralizadosbado, 15 de dezembro de 2012 26. Distribudosbado, 15 de dezembro de 2012 27. Distribudo Cada cpia um repositrio com o histrico completosbado, 15 de dezembro de 2012 28. Distribudo No necessita de acesso a rede ou um servidor centralsbado, 15 de dezembro de 2012 29. Distribudo Commits podem ser feitos ofinesbado, 15 de dezembro de 2012 30. Distribudo Commits podem ser facilmente transferidos entre repositriossbado, 15 de dezembro de 2012 31. Distribudosbado, 15 de dezembro de 2012 32. Distribudosbado, 15 de dezembro de 2012 33. Pesquisasbado, 15 de dezembro de 2012 34. Pesquisa Utiliza: Nenhum Subversion Mercurial Git Outrosbado, 15 de dezembro de 2012 35. Gitsbado, 15 de dezembro de 2012 36. Git Open sourcesbado, 15 de dezembro de 2012 37. Git Desenvolvido originalmente por Linus Torvalds, com o objetivo de...sbado, 15 de dezembro de 2012 38. Git .. manter o Kernel do Linuxsbado, 15 de dezembro de 2012 39. Git focado em velocidade, efetividade e usabilidade do mundo real em grandes projetossbado, 15 de dezembro de 2012 40. Instalaosbado, 15 de dezembro de 2012 41. Instalao Mac DMG http://code.google.com/p/git-osx-installer/downloads/list?can=3 Homebrew (mxcl.github.com/homebrew) $ brew install gitsbado, 15 de dezembro de 2012 42. Instalao Linux apt-get $ sudo apt-get install git-core git-gui git-docsbado, 15 de dezembro de 2012 43. Instalao Windows msysgit http://code.google.com/p/msysgit/downloads/list * Use Git Bash Only ** Checkout Windows-style, commit Unix-style line endingssbado, 15 de dezembro de 2012 44. GUIssbado, 15 de dezembro de 2012 45. GUIs Gitk para todas as plataformassbado, 15 de dezembro de 2012 46. GUIs GitX (L) para Mac http://gitx.laullon.com/ *GitX -> Enable Terminal Usagesbado, 15 de dezembro de 2012 47. GUIs Gitg para Linux Gerenciador de pacotessbado, 15 de dezembro de 2012 48. GUIs tortoisegit para Windows http://code.google.com/p/tortoisegit/sbado, 15 de dezembro de 2012 49. Primeiros passossbado, 15 de dezembro de 2012 50. Primeiros passos Congurao $ git cong --global user.name "Mauro George" $ git cong --global user.email "maurogot@gmail.com"sbado, 15 de dezembro de 2012 51. Primeiros passos Criando nosso projeto $ mkdir project $ cd project $ touch hello_world.phpsbado, 15 de dezembro de 2012 52. Primeiros passos Criando um repositrio $ git initsbado, 15 de dezembro de 2012 53. Primeiros passos Criando um repositrio $ git init Output: Initialized empty Git repository in /path/to/my/project/.git/sbado, 15 de dezembro de 2012 54. Primeiros passos Primeiro commit $ git add . $ git commit -m "rst commit"sbado, 15 de dezembro de 2012 55. Primeiros passos Primeiro commit $ git add . $ git commit -m "rst commit" Output: [master (root-commit) bf3bd62] rst commit0 les changed, 0 insertions(+), 0 deletions(-)create mode 100644 hello_world.phpsbado, 15 de dezembro de 2012 56. Primeiros passos Primeiro commit $ git statussbado, 15 de dezembro de 2012 57. Primeiros passos Primeiro commit $ git status Output: # On branch master nothing to commit (working directory clean)sbado, 15 de dezembro de 2012 58. Fluxo bsicosbado, 15 de dezembro de 2012 59. Fluxo bsico Estado dos arquivos Untracked Modied Staged Commitedsbado, 15 de dezembro de 2012 60. Fluxo bsico Estado dos arquivos Untracked Arquivos que o git no conhecesbado, 15 de dezembro de 2012 61. Fluxo bsico Estado dos arquivos Untracked $ touch Readme $ git statussbado, 15 de dezembro de 2012 62. Fluxo bsico Estado dos arquivos Untracked $ touch Readme $ git status Output: # On branch master # Untracked les: # (use "git add ..." to include in what will be committed) # # Readme nothing added to commit but untracked les present (use "git add" to track)sbado, 15 de dezembro de 2012 63. Fluxo bsico Estado dos arquivos Modied Arquivos que o git j conhece e que foram alteradossbado, 15 de dezembro de 2012 64. Fluxo bsico Estado dos arquivos Modied $ vim hello_world.php sbado, 15 de dezembro de 2012 65. Fluxo bsico Estado dos arquivos Modied $ git statussbado, 15 de dezembro de 2012 66. Fluxo bsico Estado dos arquivos Modied Output: # On branch master # Changes not staged for commit: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modied: hello_world.php # # Untracked les: # (use "git add ..." to include in what will be committed) # # Readme no changes added to commit (use "git add" and/or "git commit -a")sbado, 15 de dezembro de 2012 67. Fluxo bsico Estado dos arquivos Staged Arquivos que sero enviados para o repositriosbado, 15 de dezembro de 2012 68. Fluxo bsico Estado dos arquivos Staged $ git add hello_world.php $ git statussbado, 15 de dezembro de 2012 69. Fluxo bsico Estado dos arquivos Staged $ git add hello_world.php $ git status Output: # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # modied: hello_world.php # # Untracked les: # (use "git add ..." to include in what will be committed) # # Readmesbado, 15 de dezembro de 2012 70. Fluxo bsico Estado dos arquivos Commited Arquivos que j esto no repositrio gitsbado, 15 de dezembro de 2012 71. Fluxo bsico Estado dos arquivos Commited $ git commit -m "showing hello world"sbado, 15 de dezembro de 2012 72. Fluxo bsico Estado dos arquivos Commited $ git commit -m "showing hello world" Output: [master 83d672c] showing hello world1 les changed, 3 insertions(+), 0 deletions(-)sbado, 15 de dezembro de 2012 73. Fluxo bsico Estado dos arquivos Commited $ git statussbado, 15 de dezembro de 2012 74. Fluxo bsico Estado dos arquivos Commited $ git status Output: # On branch master # Untracked les: # (use "git add ..." to include in what will be committed) # # Readme nothing added to commit but untracked les present (use "git add" to track)sbado, 15 de dezembro de 2012 75. Dica Colorindo o output $ git cong --global color.ui truesbado, 15 de dezembro de 2012 76. Fluxo bsico Resumo Editar os arquivosVim / emacs / textmate / etc Colocar os arquivos em staged git add nome do arquivo Vericar as mudanasgit status git commit -m mensagem do Fazer o commit das mudanas commitsbado, 15 de dezembro de 2012 77. Dica Sempre leia as mensagens do Git Output: # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # modied: hello_world.php # # Untracked les: # (use "git add ..." to include in what will be committed) # # Readmesbado, 15 de dezembro de 2012 78. Comandossbado, 15 de dezembro de 2012 79. Comandos git diff Visualiza o que foi modicadosbado, 15 de dezembro de 2012 80. Comandos git diff $ vim hello_world.php sbado, 15 de dezembro de 2012 81. Comandos git diff $ git diffsbado, 15 de dezembro de 2012 82. Comandos git diff $ git diff Output: diff --git a/hello_world.php b/hello_world.php index fe71dc6..04beafa 100644 --- a/hello_world.php +++ b/hello_world.php @@ -1,3 +1,3 @@No newline at end of lesbado, 15 de dezembro de 2012 83. Comandos git diff --word-diff Visualiza o que foi modicado, diferenciando por palavrassbado, 15 de dezembro de 2012 84. Comandos git diff --word-diff $ git diff --word-diffsbado, 15 de dezembro de 2012 85. Comandos git diff --word-diff $ git diff --word-diff Output: diff --git a/hello_world.php b/hello_world.php index fe71dc6..04beafa 100644 --- a/hello_world.php +++ b/hello_world.php @@ -1,3 +1,3 @@ No newline at end of lesbado, 15 de dezembro de 2012 86. Comandos git diff --cached Visualiza o que foi modicado e est stagedsbado, 15 de dezembro de 2012 87. Comandos git diff --cached $ git add hello_world.php $ git statussbado, 15 de dezembro de 2012 88. Comandos git diff --cached $ git add hello_world.php $ git status Output: # On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # modified: hello_world.php # # Untracked files: # (use "git add ..." to include in what will be committed) # # Readmesbado, 15 de dezembro de 2012 89. Comandos git diff --cached $ git diffsbado, 15 de dezembro de 2012 90. Comandos git diff --cached $ git diff Output:sbado, 15 de dezembro de 2012 91. Comandos git diff --cached $ git diff --cachedsbado, 15 de dezembro de 2012 92. Comandos git diff --cached $ git diff --cached Output: diff --git a/hello_world.php b/hello_world.php index fe71dc6..04beafa 100644 --- a/hello_world.php +++ b/hello_world.php @@ -1,3 +1,3 @@No newline at end of filesbado, 15 de dezembro de 2012 93. Comandos Commitando nossas alteraes para continuarmos... $ git commit -m "change hello world message"sbado, 15 de dezembro de 2012 94. Comandos git commit -am Envia de modied para commited diretamentesbado, 15 de dezembro de 2012 95. Comandos git commit -am $ vim hello_world.php sbado, 15 de dezembro de 2012 96. Comandos git commit -am $ git statussbado, 15 de dezembro de 2012 97. Comandos git commit -am $ git status Output: # On branch master # Changes not staged for commit: # (use "git add ..." to update what will be committed) # (use "git checkout -- ..." to discard changes in working directory) # # modified: hello_world.php # # Untracked files: # (use "git add ..." to include in what will be committed) # # Readme no changes added to commit (use "git add" and/or "git commit -a")sbado, 15 de dezembro de 2012 98. Comandos git commit -am $ git commit -am "added date on hello world"sbado, 15 de dezembro de 2012 99. Comandos git commit -am $ git commit -am "added date on hello world"Output:[master 518bad1] added date on hello world 1 files changed, 1 insertions(+), 1 deletions(-)sbado, 15 de dezembro de 2012 100. Comandos git commit -am $ git statussbado, 15 de dezembro de 2012 101. Comandos git commit -am $ git statusOutput:# On branch master# Untracked files:# (use "git add ..." to include in what will be committed)## Readmenothing added to commit but untracked files present (use "git add" to track)sbado, 15 de dezembro de 2012 102. Dica Se o git no conhece ele no mexesbado, 15 de dezembro de 2012 103. Comandos Editando e commitando o Readme para continuarmos... $ vim Readme $ git add Readme $ git commit -m "added readme"sbado, 15 de dezembro de 2012 104. Comandos git log Exibe o histrico com infomaes dos commitssbado, 15 de dezembro de 2012 105. Comandos git log $ git logsbado, 15 de dezembro de 2012 106. Comandos git log $ git logOutput:commit a6aa0cb4d832a3a7c3a26001d89d8698e73790bbAuthor: Mauro George Date: Fri Jan 20 15:59:33 2012 -0200 added readmecommit 518bad17f1bc064f4d542683925ae9f1003609bdAuthor: Mauro George Date: Fri Jan 20 15:27:07 2012 -0200 added date on hello worldsbado, 15 de dezembro de 2012 107. Comandos git log --oneline Exibe o log em apenas uma linhasbado, 15 de dezembro de 2012 108. Comandos git log --oneline $ git log --onelinesbado, 15 de dezembro de 2012 109. Comandos git log --oneline $ git log --onelineOutput:53bc92d Revert "added date on hello world"a6aa0cb added readme518bad1 added date on hello world0e1b665 change hello world message83d672c showing hello worldbf3bd62 first commitsbado, 15 de dezembro de 2012 110. Voltando no temposbado, 15 de dezembro de 2012 111. Voltando no tempo git checkout Volta para o commit informado em sbado, 15 de dezembro de 2012 112. Voltando no tempo git checkout $ git checkout bf3bd62sbado, 15 de dezembro de 2012 113. Voltando no tempo git checkout Hash do primeiro commit $ git checkout bf3bd62sbado, 15 de dezembro de 2012 114. Voltando no tempo git checkout Hash do primeiro commit $ git checkout bf3bd62Output:Note: checking out bf3bd62.You are in detached HEAD state. You can look around, make experimentalchanges and commit them, and you can discard any commits you make in thisstate without impacting any branches by performing another checkout.If you want to create a new branch to retain commits you create, you maydo so (now or later) by using -b with the checkout command again. Example:git checkout -b new_branch_nameHEAD is now at bf3bd62... first commitsbado, 15 de dezembro de 2012 115. Voltando no tempo git checkout $ ls hello_world.php $ cat hello_world.phpsbado, 15 de dezembro de 2012 116. Voltando no tempo git checkout De volta para o futuro $ git checkout mastersbado, 15 de dezembro de 2012 117. Voltando no tempo git checkout De volta para o futuro $ git checkout masterOutput:Previous HEAD position was bf3bd62... first commitSwitched to branch mastersbado, 15 de dezembro de 2012 118. Voltando no tempo git checkout De volta para o futuro $ ls Readmehello_world.php $ cat hello_world.php sbado, 15 de dezembro de 2012 119. Voltando no tempo git revert Reverte um commit criando um novosbado, 15 de dezembro de 2012 120. Voltando no tempo git revert $ git revert 518bad1sbado, 15 de dezembro de 2012 121. Voltando no tempoHash do git revert quarto commit. $ git revert 518bad1Em que foi adicionada a datasbado, 15 de dezembro de 2012 122. Voltando no tempo Hash do git revert quarto commit. $ git revert 518bad1 Em que foi adicionada a dataOutput:[master 53bc92d] Revert "added date on hello world" 1 files changed, 1 insertions(+), 1 deletions(-)sbado, 15 de dezembro de 2012 123. Voltando no tempo Hash do git revert quarto commit. $ git revert 518bad1 Em que foi adicionada a data* Ser solicitado paradigitar uma mensagemdo commit, mantenha apadro por convenoOut...