Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Workshop Git - Semcomp 2013

Workshop Git - Semcomp 2013

Workshop de Git durante a Semana da Computação na USP São Carlos.

Ae362648af17ad86dbc65c56deed2192?s=128

Erich Kist

October 10, 2013
Tweet

More Decks by Erich Kist

Other Decks in Programming

Transcript

  1. your best friend Workshop de Git

  2. © Plataformatec 2013 @andrielfn e @erichkist

  3. None
  4. © Plataformatec 2013

  5. © Plataformatec 2013 plataformatec/devise

  6. © Plataformatec 2013 plataformatec/simple_form

  7. © Plataformatec 2013 elixir-lang/elixir

  8. © Plataformatec 2013

  9. © Plataformatec 2013 http://guidelines.plataformatec.com.br

  10. © Plataformatec 2013 We <3 Git

  11. Conhece o Git? Já usou controle de versão?

  12. http://www.flickr.com/photos/slworking/4516918054

  13. http://www.flickr.com/photos/slworking/4516918054 Trabalho de conclusão do Semestre

  14. http://www.flickr.com/photos/slworking/4516918054 Tudo funcionando! \o/

  15. http://www.flickr.com/photos/slworking/4516918054 Acho que consigo melhorar este algoritmo!

  16. http://www.flickr.com/photos/slworking/4516918054 Challenge accepted!

  17. http://www.flickr.com/photos/slworking/4516918054 3 horas depois...

  18. http://www.flickr.com/photos/slworking/4516918054 É, acho que não funcionou.

  19. http://www.flickr.com/photos/slworking/4516918054 Ctrl + Z

  20. http://www.flickr.com/photos/slworking/4516918054 Nada funcionando...

  21. http://www.flickr.com/photos/slworking/4516918054 Ctrl + Z

  22. http://www.flickr.com/photos/slworking/4516918054 Ctrl + Z, ..., Ctrl + Z

  23. http://www.flickr.com/photos/slworking/4516918054 Nada funcionando.

  24. http://www.flickr.com/photos/mrtea/528580604 Chega o dia da entrega e...

  25. http://www.showmyhomeworkblog.com/ten-reasons-students-dont-homework/

  26. http://www.flickr.com/photos/slworking/4516918054 Eu sou um cara precavido!

  27. © Plataformatec 2013

  28. http://www.flickr.com/photos/slworking/4516918054 Quem já passou por isso? Ou sabe de alguém?

  29. © Plataformatec 2013 Este problema é facilmente resolvido usando-se Controle

    de Versão.
  30. © Plataformatec 2013 O que iremos ver hoje História Primeiros

    passos Estrutura e Workflow Repositório Remoto
  31. Controle de versão

  32. © Plataformatec 2013 "é um software com a finalidade de

    gerenciar diferentes versões no desenvolvimento de um documento qualquer" (Wikipedia) http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers%C3%A3o
  33. História do Git

  34. © Plataformatec 2013 Linux Kernel

  35. © Plataformatec 2013 Início 3 de Abril de 2005 http://marc.info/?l=git&m=117254154130732

  36. © Plataformatec 2013 Anúncio 6 de Abril de 2005 http://marc.info/?l=linux-kernel&m=111280216717070

  37. © Plataformatec 2013 7 de Abril de 2005 http://marc.info/?l=git&m=117254154130732

  38. © Plataformatec 2013 Kernel no GIT https://github.com/torvalds/linux/commit/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2

  39. © Plataformatec 2013 Kernel no GIT https://github.com/torvalds/linux/commit/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 3.2G, +17K arquivos!!!

  40. Primeiros passos

  41. © Plataformatec 2013 Vamos criar um livro!

  42. © Plataformatec 2013 Criar diretório, trackear o diretório com o

    Git e criar arquivos
  43. © Plataformatec 2013

  44. © Plataformatec 2013

  45. © Plataformatec 2013

  46. © Plataformatec 2013

  47. © Plataformatec 2013

  48. © Plataformatec 2013 Dizendo ao Git para trackear o arquivo

  49. © Plataformatec 2013

  50. © Plataformatec 2013

  51. © Plataformatec 2013 Vamos editar o nosso Capítulo 1

  52. © Plataformatec 2013 OK Git! Como está o status disso?

  53. © Plataformatec 2013

  54. © Plataformatec 2013 Mais detalhes!! O que eu alterei?

  55. © Plataformatec 2013

  56. © Plataformatec 2013 Vamos adicionar nossas mudanças no Git

  57. © Plataformatec 2013

  58. © Plataformatec 2013 Está bom! Vamos fazer o primeiro commit.

  59. © Plataformatec 2013

  60. © Plataformatec 2013 Config? User? E-mail?

  61. Configurações

  62. © Plataformatec 2013 System Global Local

  63. © Plataformatec 2013

  64. © Plataformatec 2013

  65. © Plataformatec 2013 https://gist.github.com/erichkist/ 6912324

  66. Estrutura de um commit

  67. © Plataformatec 2013

  68. © Plataformatec 2013

  69. © Plataformatec 2013

  70. © Plataformatec 2013 Snapshot, commit, SHA1, tree, blob..

  71. © Plataformatec 2013 Existe muito mais para se entender do

    Git. Dever de casa!
  72. Mais alguns comandos

  73. © Plataformatec 2013 Vamos fazer mais algumas alterações em nosso

    Capítulo 1 e criar o arquivo de Índice.
  74. © Plataformatec 2013

  75. © Plataformatec 2013 Adicionar cada arquivo novamente, OK!

  76. © Plataformatec 2013 E se eu tiver +17K de arquivos

    para commitar?
  77. © Plataformatec 2013

  78. © Plataformatec 2013 E se eu não quiser trackear um

    dos arquivos?
  79. © Plataformatec 2013

  80. © Plataformatec 2013

  81. © Plataformatec 2013 Deixa eu ver o que eu tenho

    de alteração!
  82. © Plataformatec 2013

  83. © Plataformatec 2013 Cada as minhas alterações?

  84. © Plataformatec 2013

  85. © Plataformatec 2013 OK, vamos commitar todos os arquivos

  86. © Plataformatec 2013

  87. © Plataformatec 2013

  88. © Plataformatec 2013 Revisando...

  89. © Plataformatec 2013 Revisando... git init

  90. © Plataformatec 2013 Revisando... git init git add <file>

  91. © Plataformatec 2013 Revisando... git init git add <file> git

    add <dir>
  92. © Plataformatec 2013 Revisando... git init git add <file> git

    status git add <dir>
  93. © Plataformatec 2013 Revisando... git init git add <file> git

    add <dir> git commit -m ‘mensagem’ git status
  94. © Plataformatec 2013 Revisando...

  95. © Plataformatec 2013 Revisando... git log

  96. © Plataformatec 2013 Revisando... git log git show

  97. © Plataformatec 2013 Revisando... git log git show git diff

    (--cached)
  98. © Plataformatec 2013 Revisando... git log git reset HEAD <file>

    git show git diff (--cached)
  99. © Plataformatec 2013 Revisando... git log git reset HEAD <file>

    git show git diff (--cached)
  100. git log

  101. © Plataformatec 2013

  102. © Plataformatec 2013

  103. © Plataformatec 2013

  104. © Plataformatec 2013

  105. © Plataformatec 2013

  106. gitignore

  107. © Plataformatec 2013

  108. © Plataformatec 2013

  109. © Plataformatec 2013

  110. © Plataformatec 2013

  111. Estados do Git

  112. © Plataformatec 2013

  113. © Plataformatec 2013 Untracked Unmodified Modified Stage criar CAPITULO_1.TXT

  114. © Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1

  115. © Plataformatec 2013 CAPITULO_1 Untracked Unmodified Modified Stage $ git

    add CAPITULO_1.TXT
  116. © Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1

  117. © Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1 $ git

    commit -m “mensagem”
  118. © Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1

  119. © Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1 criar INDICE.txt

  120. © Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1

  121. © Plataformatec 2013 INDICE Untracked Unmodified Modified Stage CAPITULO_1 editar

    CAPITULO_1.txt
  122. © Plataformatec 2013 Untracked Unmodified Modified Stage CAPITULO_1 INDICE

  123. © Plataformatec 2013 CAPITULO_1 INDICE Untracked Unmodified Modified Stage $

    git add CAPITULO_1.txt
  124. © Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1

  125. © Plataformatec 2013 INDICE Untracked Unmodified Modified Stage CAPITULO_1 editar

    CAPITULO_1.txt
  126. © Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1 CAPITULO_1

  127. © Plataformatec 2013 INDICE Untracked Unmodified Modified Stage CAPITULO_1 CAPITULO_1

    $ git add CAPITULO_1.txt
  128. © Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1

  129. © Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1 $

    git commit -m “mensagem”
  130. © Plataformatec 2013 Untracked Unmodified Modified Stage INDICE CAPITULO_1

  131. Workflow de trabalho Branches, Rebases e Merges

  132. © Plataformatec 2013 Branch, o que é? https://twitter.com/pornelski/status/316190292443267073

  133. © Plataformatec 2013 Branches são ramificações do seu código. Como

    você possui snapshots pode-se criar alterações de qualquer ponto!
  134. © Plataformatec 2013 Como vejo a branch que estou? Como

    crio? Como altero?
  135. © Plataformatec 2013 Vamos lá!

  136. © Plataformatec 2013

  137. © Plataformatec 2013

  138. © Plataformatec 2013

  139. © Plataformatec 2013 Vamos mudar para a branch nova

  140. © Plataformatec 2013

  141. © Plataformatec 2013 Criar o segundo Capítulo

  142. © Plataformatec 2013

  143. © Plataformatec 2013

  144. © Plataformatec 2013

  145. © Plataformatec 2013 Nosso editor pediu alterações

  146. © Plataformatec 2013

  147. © Plataformatec 2013

  148. © Plataformatec 2013

  149. © Plataformatec 2013 Alterações feitas. Vamos continuar nosso Capítulo 2

  150. © Plataformatec 2013

  151. © Plataformatec 2013 As alterações no Índice estarão aqui?

  152. © Plataformatec 2013

  153. © Plataformatec 2013

  154. © Plataformatec 2013

  155. © Plataformatec 2013

  156. © Plataformatec 2013

  157. © Plataformatec 2013

  158. © Plataformatec 2013 REBASE Destrutivo: Histórico pode ser modificado

  159. © Plataformatec 2013 REBASE Feito na branch filha com a

    branch pai
  160. © Plataformatec 2013 Vamos voltar ao estado (snapshot) que tinhamos

    antes
  161. © Plataformatec 2013

  162. © Plataformatec 2013

  163. © Plataformatec 2013

  164. © Plataformatec 2013

  165. © Plataformatec 2013

  166. © Plataformatec 2013

  167. © Plataformatec 2013 MERGE Não Destrutivo

  168. © Plataformatec 2013 MERGE Cria sempre um commit de merge

  169. © Plataformatec 2013 Vamos atualizar o nosso Índice e commitar.

  170. © Plataformatec 2013

  171. © Plataformatec 2013 Terminado o Capítulo 2 vamos mergear com

    o master
  172. © Plataformatec 2013

  173. © Plataformatec 2013

  174. © Plataformatec 2013 Vamos limpar nossas branches

  175. © Plataformatec 2013

  176. © Plataformatec 2013

  177. © Plataformatec 2013

  178. © Plataformatec 2013

  179. © Plataformatec 2013 Revisando... git branch

  180. © Plataformatec 2013 Revisando... git branch git checkout

  181. © Plataformatec 2013 Revisando... git branch git checkout git commit

    -am ‘mensagem’
  182. © Plataformatec 2013 Revisando... git branch git checkout git commit

    -am ‘mensagem’ git rebase
  183. © Plataformatec 2013 Revisando... git branch git checkout git commit

    -am ‘mensagem’ git merge git rebase
  184. © Plataformatec 2013 Já sei commitar e trabalhar com branches.

    Como compartilho meu código?
  185. Repositório remoto

  186. © Plataformatec 2013 file ssh http PROTOCOLOS

  187. © Plataformatec 2013 http://www.flickr.com/photos/funkblogjob/2964231880/sizes/l/

  188. © Plataformatec 2013 http://github.com

  189. © Plataformatec 2013 Vamos criar as contas e configurar chave

    pública!
  190. © Plataformatec 2013 https://help.github.com/articles/generating-ssh-keys

  191. © Plataformatec 2013

  192. © Plataformatec 2013

  193. © Plataformatec 2013

  194. © Plataformatec 2013

  195. © Plataformatec 2013 Vamos criar o capítulo 3 com feature

    branch
  196. © Plataformatec 2013

  197. © Plataformatec 2013

  198. © Plataformatec 2013 Enviando nossa branch para o repositório remoto

  199. © Plataformatec 2013

  200. © Plataformatec 2013

  201. Pull Request

  202. © Plataformatec 2013 Trabalhar em equipe

  203. © Plataformatec 2013 Abrindo Pull Request

  204. © Plataformatec 2013 # Modo 1

  205. © Plataformatec 2013

  206. © Plataformatec 2013 # Modo 2

  207. © Plataformatec 2013

  208. © Plataformatec 2013

  209. © Plataformatec 2013 Comunicando as mudanças

  210. © Plataformatec 2013

  211. © Plataformatec 2013

  212. © Plataformatec 2013 Vamos mergear nossso capítulo via GitHub!

  213. © Plataformatec 2013

  214. © Plataformatec 2013

  215. © Plataformatec 2013

  216. © Plataformatec 2013

  217. © Plataformatec 2013

  218. Praticando Open Source

  219. © Plataformatec 2013 Forkar projeto

  220. © Plataformatec 2013

  221. © Plataformatec 2013

  222. © Plataformatec 2013 Clonar o projeto

  223. © Plataformatec 2013

  224. © Plataformatec 2013 Vamos criar o capítulo 4

  225. © Plataformatec 2013

  226. © Plataformatec 2013

  227. © Plataformatec 2013

  228. © Plataformatec 2013 Enviando nossa branch para o repositório remoto

  229. © Plataformatec 2013

  230. © Plataformatec 2013

  231. © Plataformatec 2013

  232. © Plataformatec 2013

  233. © Plataformatec 2013 Aceitando o Pull Request

  234. © Plataformatec 2013

  235. © Plataformatec 2013

  236. © Plataformatec 2013

  237. Resolvendo conflitos

  238. © Plataformatec 2013 Vamos criar o capítulo 5

  239. © Plataformatec 2013

  240. © Plataformatec 2013 Nosso editor pediu alterações, OK!

  241. © Plataformatec 2013

  242. © Plataformatec 2013

  243. © Plataformatec 2013 Como ficou as nossas branches?

  244. © Plataformatec 2013

  245. © Plataformatec 2013 Capítulo 5 está fechado. Vamos juntar ao

    master.
  246. © Plataformatec 2013

  247. © Plataformatec 2013

  248. © Plataformatec 2013 Ops!! Conflito?

  249. © Plataformatec 2013 Vamos ver o nosso status

  250. © Plataformatec 2013

  251. © Plataformatec 2013

  252. © Plataformatec 2013

  253. © Plataformatec 2013

  254. © Plataformatec 2013

  255. © Plataformatec 2013 Fácil, não?

  256. © Plataformatec 2013 Me diz mais coisas legais aê!

  257. Mais coisas do GIT...

  258. © Plataformatec 2013 $ git commit --amend

  259. © Plataformatec 2013 $ git blame

  260. © Plataformatec 2013 Hooks do Git

  261. GitHub e você!

  262. © Plataformatec 2013

  263. © Plataformatec 2013 https://github.com/edu

  264. © Plataformatec 2013 Existem outras opções https://codeplane.com.br/

  265. © Plataformatec 2013 Existem outras opções https://bitbucket.org/

  266. © Plataformatec 2013 Existem outras opções http://www.codebasehq.com/

  267. Próximos passos

  268. © Plataformatec 2013 Be a master! http://octodex.github.com/dojocat/

  269. © Plataformatec 2013 http://thkoch2001.github.io/whygitisbetter/

  270. © Plataformatec 2013 http://try.github.io

  271. © Plataformatec 2013 http://try.github.io

  272. © Plataformatec 2013 http://www.akitaonrails.com/2012/04/09/screencasts-liberados-gratuitamente

  273. © Plataformatec 2013 http://pcottle.github.io/learnGitBranching/

  274. Além do Git e GitHub

  275. © Plataformatec 2013 GitHub não é apenas um repositório de

    códigos!
  276. © Plataformatec 2013 GitHub is the best place to share

    code with friends, co-workers, classmates, and complete strangers. Over four million people use GitHub to build amazing things together.
  277. © Plataformatec 2013 Trocar conhecimento

  278. © Plataformatec 2013

  279. © Plataformatec 2013 Cuidar do código

  280. © Plataformatec 2013

  281. © Plataformatec 2013

  282. © Plataformatec 2013

  283. © Plataformatec 2013

  284. © Plataformatec 2013

  285. © Plataformatec 2013 Comunicação

  286. © Plataformatec 2013 https://github.com/mojombo/jekyll/pull/583

  287. © Plataformatec 2013 Pessoas em primeiro lugar!

  288. © Plataformatec 2013 Seja cordial!

  289. © Plataformatec 2013 Obrigado! http://octodex.github.com/ironcat/