Your SlideShare is downloading. ×
Git para iniciantes v1.2.0 @ PHP‘n Rio 2012
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Git para iniciantes v1.2.0 @ PHP‘n Rio 2012

1,604
views

Published on

Apresentada em 10/11/12 no PHP‘n Rio 2012. Na palestra você verá uma introdução aos sistemas de controle de versão, passando pelos modelos centralizado e distribuído. Um pouco da história do git, a …

Apresentada em 10/11/12 no PHP‘n Rio 2012. Na palestra você verá uma introdução aos sistemas de controle de versão, passando pelos modelos centralizado e distribuído. Um pouco da história do git, a instalação e GUIs para Mac, Linux e Windows. As configurações e o fluxo básico para o dia a dia. Além de alguns comandos e dicas que ajudarão no dia a dia com o git, inclusive para quem já usa o git no seu dia a dia


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

No Downloads
Views
Total Views
1,604
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
31
Comments
0
Likes
3
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
  • \n
  • \n
  • * Trabalho com web a aproximadamente 5 anos\n\n
  • * Front end\n* PHP e MySQL\n\n
  • * Ruby/Rails\n* PostgreSQL\n* XP\n
  • \n
  • \n
  • * Aprender PHP está pausado\n* maurogeorge.github.com blog em que falo de outras coisas além de PHP\n\n
  • * Sistema que guarda alterações dos arquivos com o passar do tempo\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * pode voltar para qualquer commit quando quiser\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * de uma revisão especifica, no distribuído temos o repositório todo\n
  • dificultando a contribuição nos projetos open source\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • - Instalar os 3 pacotes\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Modified ou unstaged, usaremos nos exemplos modified\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • - Output no próximo slide pois é muito grande\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * Hosting de repositórios git, compartilhar código seja trabalho, open source, estudos, amigos, ferramentas colaborativas\n* Fundadado 2008, San Francisco. Mais de 2 milhões de pessoas usam\n* hosting de projetos open source grátis, alavancou o open source\n
  • apenas o DHH\n
  • Milhares de colaboradores\n* 4k+ forks\n* 16k+ Stars\n\n
  • Boleto PHP\n* Projeto\n* Israel, Grupo PHP Rio e Eu\n\n\n
  • \n
  • * Participar da comunidade \n* Open Source\n* Aprender coisa nova, OOP, PHP Edge, temos testes etc\n
  • Faltou bastante coisa legal como:\n- Branches\n- trabalho em equipe (remotes)\n- ignorando arquivos\n- etc...\n
  • \n
  • \n
  • Transcript

    • 1. Git para iniciantes
    • 2. Git para iniciantes 1.2.0
    • 3. Mauro... quem?
    • 4. Mauro... quem?
    • 5. Mauro... quem?
    • 6. Mauro George http://maurogeorge.github.com http://www.aprenderphp.com.br @maurogeorge
    • 7. Sistemas de controle de versão VCS (Version control systems)
    • 8. Pra que?
    • 9. Pra que? Gerenciar diferentes versões de um arquivo
    • 10. Pra que? Guardar histórico de alterações de um arquivo
    • 11. Pra que? Saber quem fez e o porquê de cada alteração
    • 12. Vantagens
    • 13. Vantagens Backup automático
    • 14. Vantagens Controle do histórico
    • 15. Vantagens Trabalho em equipe
    • 16. Vantagens Marcação e resgate de versões estáveis
    • 17. Vantagens Ramificação do projeto
    • 18. Diferentes modelos
    • 19. Centralizado
    • 20. Centralizado Necessita de um servidor central
    • 21. Centralizado O checkout é uma cópia da estrutura dos arquivos do repositório
    • 22. Centralizado Somente usuários autorizados podem fazer commits
    • 23. Centralizado
    • 24. Distribuído
    • 25. Distribuído Cada cópia é um repositório com o histórico completo
    • 26. Distribuído Não necessita de acesso a rede ou um servidor central
    • 27. Distribuído Commits podem ser feitos offline
    • 28. Distribuído Commits podem ser facilmente transferidos entre repositórios
    • 29. Distribuído
    • 30. Distribuído
    • 31. Pesquisa
    • 32. Pesquisa Utiliza: Nenhum Subversion Mercurial Git Outro
    • 33. Git
    • 34. Git Open source
    • 35. Git Desenvolvido originalmente por Linus Torvalds, com o objetivo de...
    • 36. Git .. manter o Kernel do Linux
    • 37. Git “focado em velocidade, efetividade e usabilidade do mundo real em grandes projetos”
    • 38. Instalação
    • 39. Instalação Mac DMG http://code.google.com/p/git-osx-installer/downloads/list?can=3 Homebrew (mxcl.github.com/homebrew) $ brew install git
    • 40. Instalação Linux apt-get $ sudo apt-get install git-core git-gui git-doc
    • 41. Instalação Windows msysgit http://code.google.com/p/msysgit/downloads/list * Use Git Bash Only ** Checkout Windows-style, commit Unix-style line endings
    • 42. GUIs
    • 43. GUIs Gitk para todas as plataformas
    • 44. GUIs GitX (L) para Mac http://gitx.laullon.com/ *GitX -> Enable Terminal Usage
    • 45. GUIs Gitg para Linux Gerenciador de pacotes
    • 46. GUIs tortoisegit para Windows http://code.google.com/p/tortoisegit/
    • 47. Primeiros passos
    • 48. Primeiros passos Configuração $ git config --global user.name "Mauro George" $ git config --global user.email "maurogot@gmail.com"
    • 49. Primeiros passos Criando nosso projeto $ mkdir project $ cd project $ touch hello_world.php
    • 50. Primeiros passos Criando um repositório $ git init
    • 51. Primeiros passos Criando um repositório $ git init Output: Initialized empty Git repository in /path/to/my/project/.git/
    • 52. Primeiros passos Primeiro commit $ git add . $ git commit -m "first commit"
    • 53. Primeiros passos Primeiro commit $ git add . $ git commit -m "first commit" Output: [master (root-commit) bf3bd62] first commit 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 hello_world.php
    • 54. Primeiros passos Primeiro commit $ git status
    • 55. Primeiros passos Primeiro commit $ git status Output: # On branch master nothing to commit (working directory clean)
    • 56. Fluxo básico
    • 57. Fluxo básico Estado dos arquivos Untracked Modified Staged Commited
    • 58. Fluxo básico Estado dos arquivos Untracked Arquivos que o git não conhece
    • 59. Fluxo básico Estado dos arquivos Untracked $ touch Readme $ git status
    • 60. Fluxo básico Estado dos arquivos Untracked $ touch Readme $ git status Output: # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme nothing added to commit but untracked files present (use "git add" to track)
    • 61. Fluxo básico Estado dos arquivos Modified Arquivos que o git já conhece e que foram alterados
    • 62. Fluxo básico Estado dos arquivos Modified $ vim hello_world.php <?php echo 'Hello world'; ?>
    • 63. Fluxo básico Estado dos arquivos Modified $ git status
    • 64. Fluxo básico Estado dos arquivos Modified Output: # 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.php # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme no changes added to commit (use "git add" and/or "git commit -a")
    • 65. Fluxo básico Estado dos arquivos Staged Arquivos que serão enviados para o repositório
    • 66. Fluxo básico Estado dos arquivos Staged $ git add hello_world.php $ git status
    • 67. Fluxo básico Estado dos arquivos Staged $ git add hello_world.php $ git status Output: # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.php # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme
    • 68. Fluxo básico Estado dos arquivos Commited Arquivos que já estão no repositório git
    • 69. Fluxo básico Estado dos arquivos Commited $ git commit -m "showing hello world"
    • 70. Fluxo básico Estado dos arquivos Commited $ git commit -m "showing hello world" Output: [master 83d672c] showing hello world 1 files changed, 3 insertions(+), 0 deletions(-)
    • 71. Fluxo básico Estado dos arquivos Commited $ git status
    • 72. Fluxo básico Estado dos arquivos Commited $ git status Output: # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme nothing added to commit but untracked files present (use "git add" to track)
    • 73. Dica Colorindo o output $ git config --global color.ui true
    • 74. Fluxo básico Resumo Editar os arquivos Vim / emacs / textmate / etc Colocar os arquivos em staged git add nome do arquivo Verificar as mudanças git status Fazer o commit das mudanças git commit -m “mensagem do commit”
    • 75. Dica Sempre leia as mensagens do Git Output: # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.php # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme
    • 76. Comandos
    • 77. Comandos git diff Visualiza o que foi modificado
    • 78. Comandos git diff $ vim hello_world.php <?php echo “Hello world, no PHP'n Rio 2012”; ?>
    • 79. Comandos git diff $ git diff
    • 80. 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 @@ <?php - echo 'Hello world'; + echo “Hello world, no PHP'n Rio 2012”; ?> No newline at end of file
    • 81. Comandos git diff --word-diff Visualiza o que foi modificado, diferenciando por palavras
    • 82. Comandos git diff --word-diff $ git diff --word-diff
    • 83. 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 @@ <?php echo “Hello [-world”;-]{+world, no PHP'n Rio 2012”;+} ?> No newline at end of file
    • 84. Comandos git diff --cached Visualiza o que foi modificado e está staged
    • 85. Comandos git diff --cached $ git add hello_world.php $ git status
    • 86. Comandos git diff --cached $ git add hello_world.php $ git status Output: # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.php ## Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme
    • 87. Comandos git diff --cached $ git diff
    • 88. Comandos git diff --cached $ git diff Output:
    • 89. Comandos git diff --cached $ git diff --cached
    • 90. 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 @@ <?php - echo 'Hello world'; + echo “Hello world, no PHP'n Rio 2012”; ?> No newline at end of file
    • 91. Comandos Commitando nossas alterações para continuarmos... $ git commit -m "change hello world message"
    • 92. Comandos git commit -am Envia de modified para commited diretamente
    • 93. Comandos git commit -am $ vim hello_world.php <?php echo “Hello world, no PHP'n Rio 2012 em 10/11/2012”; ?>
    • 94. Comandos git commit -am $ git status
    • 95. Comandos git commit -am $ git status Output: # 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.php ## Untracked files: # (use "git add <file>..." to include in what will be committed) ## Readme no changes added to commit (use "git add" and/or "git commit -a")
    • 96. Comandos git commit -am $ git commit -am "added date on hello world"
    • 97. 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(-)
    • 98. Comandos git commit -am $ git status
    • 99. Comandos git commit -am $ git status Output: # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme nothing added to commit but untracked files present (use "git add" to track)
    • 100. Dica Se o git não conhece ele não mexe
    • 101. Comandos Editando e commitando o Readme para continuarmos... $ vim Readme $ git add Readme $ git commit -m "added readme"
    • 102. Comandos git log Exibe o histórico com infomações dos commits
    • 103. Comandos git log $ git log
    • 104. Comandos git log $ git log Output: commit a6aa0cb4d832a3a7c3a26001d89d8698e73790bb Author: Mauro George <maurogot@gmail.com> Date: Fri Jan 20 15:59:33 2012 -0200 added readme commit 518bad17f1bc064f4d542683925ae9f1003609bd Author: Mauro George <maurogot@gmail.com> Date: Fri Jan 20 15:27:07 2012 -0200 added date on hello world
    • 105. Comandos git log --oneline Exibe o log em apenas uma linha
    • 106. Comandos git log --oneline $ git log --oneline
    • 107. Comandos git log --oneline $ git log --oneline Output: 53bc92d Revert "added date on hello world" a6aa0cb added readme 518bad1 added date on hello world 0e1b665 change hello world message 83d672c showing hello world bf3bd62 first commit
    • 108. Voltando no tempo
    • 109. Voltando no tempo git checkout <hash> Volta para o commit informado em <hash>
    • 110. Voltando no tempo git checkout <hash> $ git checkout bf3bd62
    • 111. Voltando no tempo git checkout <hash> Hash do primeiro commit $ git checkout bf3bd62
    • 112. Voltando no tempo git checkout <hash> Hash do primeiro commit $ git checkout bf3bd62 Output: Note: checking out 'bf3bd62'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at bf3bd62... first commit
    • 113. Voltando no tempo git checkout <hash> $ ls hello_world.php $ cat hello_world.php
    • 114. Voltando no tempo git checkout <hash> De volta para o futuro $ git checkout master
    • 115. Voltando no tempo git checkout <hash> De volta para o futuro $ git checkout master Output: Previous HEAD position was bf3bd62... first commit Switched to branch 'master'
    • 116. Voltando no tempo git checkout <hash> De volta para o futuro $ ls Readme hello_world.php $ cat hello_world.php <?php echo “Hello world, no PHP'n Rio 2012 em 10/11/2012”; ?>
    • 117. Voltando no tempo git revert <hash> Reverte um commit criando um novo
    • 118. Voltando no tempo git revert <hash> $ git revert 518bad1
    • 119. Voltando no tempo git revert <hash> $ git revert 518bad1 Hash do quarto commit. Em que foi adicionada a data
    • 120. Voltando no tempo git revert <hash> $ git revert 518bad1 Hash do quarto commit. Em que foi adicionada a data Output: [master 53bc92d] Revert "added date on hello world" 1 files changed, 1 insertions(+), 1 deletions(-)
    • 121. Voltando no tempo git revert <hash> $ git revert 518bad1 Hash do quarto commit. Em que foi adicionada a data Output: [master 53bc92d] Revert "added date on hello world" 1 files changed, 1 insertions(+), 1 deletions(-) * Será solicitado para digitar uma mensagem do commit, mantenha a padrão por convenção
    • 122. Voltando no tempo git revert <hash> $ cat hello_world.php <?php echo “Hello world, no PHP'n Rio 2012”; ?>
    • 123. Dica Commits pequenos e constantes Boa mensagem de commit Created model of User Má mensagem de commit Created model of User, Post and Comments and added template files
    • 124. Voltando no tempo git checkout <hash> <arquivo> Recupera o arquivo do commit informado
    • 125. Voltando no tempo git checkout <hash> <arquivo> $ git checkout 83d672c hello_world.php
    • 126. Voltando no tempo git checkout <hash> <arquivo> $ git checkout 83d672c hello_world.php Hash do segundo commit. Em que foi criada a mensagem
    • 127. Voltando no tempo git checkout <hash> <arquivo> $ git status
    • 128. Voltando no tempo git checkout <hash> <arquivo> $ git status Output: # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) ## modified: hello_world.php #
    • 129. Voltando no tempo git checkout <hash> <arquivo> $ git diff --cached
    • 130. Voltando no tempo git checkout <hash> <arquivo> $ git diff --cached Output: diff --git a/hello_world.php b/hello_world.php index 04beafa..fe71dc6 100644 --- a/hello_world.php +++ b/hello_world.php @@ -1,3 +1,3 @@ <?php - echo “Hello world, no PHP'n Rio 2012”; + echo 'Hello world'; ?> No newline at end of file
    • 131. Voltando no tempo git checkout . Recupera todos os arquivos sobreescrevendo as mudanças locais
    • 132. Voltando no tempo git checkout . $ vim hello_world.php $ vim Readme
    • 133. Voltando no tempo git checkout . $ vim hello_world.php $ vim Readme
    • 134. Voltando no tempo git checkout . $ git status
    • 135. Voltando no tempo git checkout . $ git status Output: # 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: Readme # modified: hello_world.php #n o changes added to commit (use "git add" and/or "git commit -a")
    • 136. Voltando no tempo git checkout . $ git checkout .
    • 137. Voltando no tempo git checkout . $ git status
    • 138. Voltando no tempo git checkout . $ git status Output: # On branch master nothing to commit (working directory clean)
    • 139. vimeo.com/2979844 23 de janeiro de 2005 Github
    • 140. Github 19 de janeiro de 2009 vimeo.com/2979844
    • 141. Boleto PHP https://github.com/BielSystems/boletophp/
    • 142. Boleto PHP https://github.com/BielSystems/boletophp/
    • 143. Boleto PHP
    • 144. Perguntas?
    • 145. Obrigado! @maurogeorge maurogeorge.github.com