Use git e perca seu medo de errar

A138df21b8dd1d76cb005d6c46b15785?s=47 Bruno
December 06, 2014

Use git e perca seu medo de errar

O caminho para o sucesso é inevitavelmente repleto de erros e falhas. Mesmo assim, alguns tem medo de tentar coisas novas e acabar provocando desastres colossais irreparáveis.
Esta palestra será sobre o Git – um sistema de controle de versões distribuído que, dentre outras coisas, nos permite salvar o estado atual de arquivos e diretórios. Ele também permite retornar as coisas aos seus estados anteriores, caso seja necessário. O Git é um grande aliado da criatividade. Temos a liberdade de testar novas ideias, com a segurança de poder voltar atrás se algo der errado. Também falaremos da importância dos SCV’s e veremos alguns comandos básicos para utilizar o programa na prática.
Palestra apresentada no WordCamp Salvador 2014.

A138df21b8dd1d76cb005d6c46b15785?s=128

Bruno

December 06, 2014
Tweet

Transcript

  1. Use git e perca seu medo de errar por Bruno

    Calheira
  2. Quem é Bruno Calheira? Matemático. Especialista em Engenharia de Software.

    Técnico Judiciário do TJ-BA. Delegado Sindical. Consultor Web Freelancer. Programador.
  3. As falhas de hoje são os degraus para o sucesso

    de amanhã.
  4. Thomas Edson “O sucesso é 1% de inspiração e 99%

    de transpiração.”
  5. Mas erros também podem provocar danos graves

  6. None
  7. None
  8. E se pudéssemos voltar atrás, e apagar os erros?

  9. Sistemas de Controle de Versões

  10. Sistemas de Controle de Versõe s ar maze nam a

    s alterações em um arquivo o u u m c o n j u n t o d e ar q u i v o s a o lo ng o d o tempo, per mitindo que, p o s t e r i o r m e n t e , v o c ê retorne este(s) arquivo(s) a o (s) s e u (s) e s t ad o (s) anterior(es).
  11. Vantagens de usar um SCV: Eficiência Economia de espaço;

  12. Vantagens de usar um SCV: Eficiência Economia de espaço; Padroniza

    as informações a respeito de cada versão;
  13. Vantagens de usar um SCV: Eficiência Economia de espaço; Padroniza

    as informações a respeito de cada versão; Destaca as diferenças entre cada versão salva.
  14. Vantagens de usar um SCV: Segurança Permite recuperar versões anteriores;

  15. Vantagens de usar um SCV: Segurança Permite recuperar versões anteriores;

    Poder recuperar arquivos apagados por acidente;
  16. Vantagens de usar um SCV: Segurança Permite recuperar versões anteriores;

    Poder recuperar arquivos apagados por acidente; Funciona como Backup;
  17. Vantagens de usar um SCV: Colaboração Múltiplos usuários podem trabalhar

    em um mesmo arquivo simultaneamente;
  18. Vantagens de usar um SCV: Colaboração Múltiplos usuários podem trabalhar

    em um mesmo arquivo simultaneamente; Saber: quem alterou o quê, quando e como.
  19. Principais SCV

  20. None
  21. Open source. Criado por 
 Linus Torvalds para gerenciar o

    código do Linux. !
  22. Distribuído. Cada usuário tem um repositório completo.

  23. Vocabulário Repositório Espécie de Banco de Dados onde o SCV

    armazena as versões e os metadados destas versões.
  24. None
  25. None
  26. Rápido Reduz a necessidade de conexão com o servidor.

  27. Comparar diferenças; Ver o histórico Confirmar alterações Alternar entre/ Integrar

    branches O que você pode fazer Off-Line:
  28. Fácil Aprendizado; Comunidade ativa e amigável.

  29. Instalando o Git

  30. http:/ /git-scm.com

  31. None
  32. http:/ /git-scm.com/downloads/guis

  33. Alguns comandos básicos

  34. Configurando o Git

  35. Comando git config Configura o git

  36. ~$! !

  37. ~$ git config --global user.name “Fulano de Tal”! !

  38. ~$ git config --global user.name “Fulano de Tal”! ! ~$

    git config --global user.email fulano@exemplo.com
  39. ~$ git config --list

  40. ~$ git config --list! ! user.name=Fulano de Tal! user.email=fulano@exemplo.com! core.editor=nano

    -wl1! color.ui=true! core.repositoryformatversion=0! core.filemode=true! core.bare=false! core.logallrefupdates=true! core.ignorecase=true! core.precomposeunicode=true! ! ~$
  41. Criando um Repositório

  42. ~$ cd Desktop #muda de diretorio! !

  43. ~$ cd Desktop #muda de diretorio! ! ~/Desktop $

  44. ~$ cd Desktop #muda de diretorio! ! ~/Desktop $ mkdir

    wordcamp_ssa #cria diretorio! ! ~/Desktop $
  45. None
  46. ~$ cd Desktop #muda de diretorio! ! ~/Desktop $ mkdir

    wordcamp_ssa #cria diretorio! ! ~/Desktop $ cd wordcamp_ssa! ! ~/Desktop/wordcamp_ssa $
  47. ~$ cd Desktop #muda de diretorio! ! ~/Desktop $ mkdir

    wordcamp_ssa #cria diretorio! ! ~/Desktop $ cd wordcamp_ssa! ! ~/Desktop/wordcamp_ssa $ touch index.html #cria arquivo! ! ~/Desktop/wordcamp_ssa $
  48. None
  49. None
  50. None
  51. Comando git init Inicia um repositório

  52. ~/Desktop/wordcamp_ssa $ git init!

  53. ~/Desktop/wordcamp_ssa $ git init! Initialized empty Git repository in /Users/

    brunocalheira/Desktop/wordcamp_ssa/.git/ ! ! ~/Desktop/wordcamp_ssa $
  54. ~/Desktop/wordcamp_ssa $ ls #listar diretório! index.html! ! ~/Desktop/wordcamp_ssa $

  55. None
  56. ~/Desktop/wordcamp_ssa $ ls -la #exibe ocultos!

  57. ~/Desktop/wordcamp_ssa $ ls -la #exibe ocultos! total 8! drwxr-xr-x 4

    brunocalheira staff 136 2 Dez 19:06 .! drwx------+ 4 brunocalheira staff 136 2 Dez 18:46 ..! drwxr-xr-x 10 brunocalheira staff 340 2 Dez 19:06 .git! -rw-r--r-- 1 brunocalheira staff 295 2 Dez 18:53 index.html! ! ~/Desktop/wordcamp_ssa $
  58. Adicionando arquivos no Repositório

  59. Comando git status Verifica o status dos arquivos

  60. ~/Desktop/wordcamp_ssa $ git status!

  61. ~/Desktop/wordcamp_ssa $ git status! On branch master! ! Initial commit!

    ! Untracked files:! (use "git add <file>..." to include in what will be committed)! ! ! index.html! ! nothing added to commit but untracked files present (use "git add" to track)
  62. Comando git add Adiciona arquivos ao Stage

  63. Diretório de Trabalho Staging Area Repositório Git

  64. Diretório de Trabalho Staging Area Repositório Git git add

  65. ~/Desktop/wordcamp_ssa $ git add index.html! ! ~/Desktop/wordcamp_ssa $

  66. ~/Desktop/wordcamp_ssa $ git add index.html! ! ~/Desktop/wordcamp_ssa $ git status!

    On branch master! ! Initial commit! ! Changes to be committed:! (use "git rm --cached <file>..." to unstage)! ! ! new file: index.html! ! ! ~/Desktop/wordcamp_ssa $
  67. Comando git commit Confirma o registro de uma versão do

    projeto no Repositório
  68. ~/Desktop/wordcamp_ssa $ git commit -m "Versão Inicial"!

  69. ~/Desktop/wordcamp_ssa $ git commit -m "Versão Inicial"! [master (root-commit) 6b03bef]

    Versão Inicial! 1 file changed, 12 insertions(+)! create mode 100644 index.html! ! ~/Desktop/wordcamp_ssa $
  70. Diretório de Trabalho Staging Area Repositório Git git add git

    commit
  71. Comando git log Consulta os commits realizados

  72. ~/Desktop/wordcamp_ssa $ git log! commit 6b03bef21f7413754141b1b365857d1aa2313801! Author: Bruno Calheira <bruno@calheira.com>!

    Date: Tue Dec 2 19:10:50 2014 -0300! ! Versão Inicial! ! ~/Desktop/wordcamp_ssa $
  73. Vocabulário Hash SHA-1 Idenficador Único de cada Commit. Composto de

    40 caracteres gerados a partir de uma função de checksum.
  74. Alterando o projeto

  75. None
  76. None
  77. None
  78. ~/Desktop/wordcamp_ssa $ git status!

  79. ~/Desktop/wordcamp_ssa $ 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: index.html! ! Untracked files:! (use "git add <file>..." to include in what will be committed)! ! ! estilo.css! ! no changes added to commit (use "git add" and/or "git commit -a")! ! ~/Desktop/wordcamp_ssa $
  80. ~/Desktop/wordcamp_ssa $ git add .! !

  81. ~/Desktop/wordcamp_ssa $ git add .! ! ~/Desktop/wordcamp_ssa $

  82. ~/Desktop/wordcamp_ssa $ git add .! ! ~/Desktop/wordcamp_ssa $ git status

  83. ~/Desktop/wordcamp_ssa $ git add .! ! ~/Desktop/wordcamp_ssa $ git status!

    On branch master! Changes to be committed:! (use "git reset HEAD <file>..." to unstage)! ! ! new file: estilo.css! ! modified: index.html! ! ~/Desktop/wordcamp_ssa $
  84. ~/Desktop/wordcamp_ssa $ git commit -m "Adiciona Folha de Estilos"!

  85. ~/Desktop/wordcamp_ssa $ git commit -m "Adiciona Folha de Estilos"! [master

    4d1ca5d] Adiciona Folha de Estilos! 2 files changed, 7 insertions(+), 1 deletion(-)! create mode 100644 estilo.css! ! ~/Desktop/wordcamp_ssa $
  86. ~/Desktop/wordcamp_ssa $ git log --oneline !

  87. ~/Desktop/wordcamp_ssa $ git log --oneline ! 4d1ca5d Adiciona Folha de

    Estilos! 6b03bef Versão Inicial! ! ~/Desktop/wordcamp_ssa $
  88. Ramificando o projeto

  89. Comando git branch exibe, cria e deleta ramos

  90. ~/Desktop/wordcamp_ssa $ git branch figura!

  91. ~/Desktop/wordcamp_ssa $ git branch figura! ! ~/Desktop/wordcamp_ssa $ !

  92. ~/Desktop/wordcamp_ssa $ git branch figura! ! ~/Desktop/wordcamp_ssa $ git branch!

  93. ~/Desktop/wordcamp_ssa $ git branch figura! ! ~/Desktop/wordcamp_ssa $ git branch!

    figura! * master! ! ~/Desktop/wordcamp_ssa $
  94. Comando git checkout Carrega um arquivo Carrega um ramo Carrega

    uma versão
  95. ~/Desktop/wordcamp_ssa $ git checkout figura!

  96. ~/Desktop/wordcamp_ssa $ git checkout figura! Switched to branch 'figura'! !

    ~/Desktop/wordcamp_ssa $
  97. ~/Desktop/wordcamp_ssa $ git checkout figura! Switched to branch 'figura'! !

    ~/Desktop/wordcamp_ssa $ git branch!
  98. ~/Desktop/wordcamp_ssa $ git checkout figura! Switched to branch 'figura'! !

    ~/Desktop/wordcamp_ssa $ git branch!
  99. ~/Desktop/wordcamp_ssa $ git checkout figura! Switched to branch 'figura'! !

    ~/Desktop/wordcamp_ssa $ git branch! * figura! master! ! ~/Desktop/wordcamp_ssa $
  100. None
  101. None
  102. None
  103. ~/Desktop/wordcamp_ssa $ git add .! ! ~/Desktop/wordcamp_ssa $ git commit

    -m “Adiciona Figura Original”! [figura e5b676e] Adiciona Figura Original! 2 files changed, 1 insertion(+)! create mode 100644 ecce_hommo.jpg! ! ~/Desktop/wordcamp_ssa $
  104. ~/Desktop/wordcamp_ssa $ git checkout master! Switched to branch 'master'! !

    ~/Desktop/wordcamp_ssa $
  105. None
  106. None
  107. ~/Desktop/wordcamp_ssa $ git checkout master! Switched to branch 'master'! !

    ~/Desktop/wordcamp_ssa $ git log --oneline ! 4d1ca5d Adiciona Folha de Estilos! 6b03bef Versão Inicial! ! !
  108. ~/Desktop/wordcamp_ssa $ git checkout master! Switched to branch 'master'! !

    ~/Desktop/wordcamp_ssa $ git log --oneline ! 4d1ca5d Adiciona Folha de Estilos! 6b03bef Versão Inicial! ! ~/Desktop/wordcamp_ssa $ git checkout figura! Switched to branch 'figura'! ! ! ! !
  109. ~/Desktop/wordcamp_ssa $ git checkout master! Switched to branch 'master'! !

    ~/Desktop/wordcamp_ssa $ git log --oneline ! 4d1ca5d Adiciona Folha de Estilos! 6b03bef Versão Inicial! ! ~/Desktop/wordcamp_ssa $ git checkout figura! Switched to branch 'figura'! ! ~/Desktop/wordcamp_ssa $ git log --oneline ! e5b676e Adiciona Figura Original! 4d1ca5d Adiciona Folha de Estilos! 6b03bef Versão Inicial! ! !
  110. Fundindo Ramos

  111. ~/Desktop/wordcamp_ssa $ git checkout master! Switched to branch 'master'! !

    ~/Desktop/wordcamp_ssa $
  112. Comando git merge Agrega as versões de outro ramo no

    ramo atual
  113. ~/Desktop/wordcamp_ssa $ git checkout master! Switched to branch 'master'! !

    ~/Desktop/wordcamp_ssa $ git merge figura !
  114. ~/Desktop/wordcamp_ssa $ git checkout master! Switched to branch 'master'! !

    ~/Desktop/wordcamp_ssa $ git merge figura ! Updating 4d1ca5d..e5b676e! Fast-forward! ecce_hommo.jpg | Bin 0 -> 22138 bytes! index.html | 1 +! 2 files changed, 1 insertion(+)! create mode 100644 ecce_hommo.jpg! ! ~/Desktop/wordcamp_ssa $
  115. ~/Desktop/wordcamp_ssa $ git log --oneline ! e5b676e Adiciona Figura Original!

    4d1ca5d Adiciona Folha de Estilos! 6b03bef Versão Inicial! ! ~/Desktop/wordcamp_ssa $
  116. None
  117. Corrigindo erros

  118. ~/Desktop/wordcamp_ssa $ git checkout -b restauracao! Switched to a new

    branch ‘restauracao'! ! ~/Desktop/wordcamp_ssa $
  119. ~/Desktop/wordcamp_ssa $ git checkout -b restauracao! Switched to a new

    branch ‘restauracao'! ! ~/Desktop/wordcamp_ssa $ git branch! figura! master! * restauracao! ! ~/Desktop/wordcamp_ssa $
  120. None
  121. None
  122. ~/Desktop/wordcamp_ssa $ git status! On branch restauracao! 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: ecce_hommo.jpg! ! no changes added to commit (use "git add" and/or "git commit -a")! ! ~/Desktop/wordcamp_ssa $
  123. ~/Desktop/wordcamp_ssa $ git commit -am "Atualiza a imagem"! !

  124. ~/Desktop/wordcamp_ssa $ git commit -am "Atualiza a imagem"! [restauracao 0f4ed4c]

    Atualiza a imagem! 1 file changed, 0 insertions(+), 0 deletions(-)! rewrite ecce_hommo.jpg (98%)!
  125. ~/Desktop/wordcamp_ssa $ git log --oneline --stat! 0f4ed4c Atualiza a imagem!

    ecce_hommo.jpg | Bin 22138 -> 12670 bytes! 1 file changed, 0 insertions(+), 0 deletions(-)! e5b676e Adiciona Figura Original! ecce_hommo.jpg | Bin 0 -> 22138 bytes! index.html | 1 +! 2 files changed, 1 insertion(+)! 4d1ca5d Adiciona Folha de Estilos! estilo.css | 6 ++++++! index.html | 2 +-! 2 files changed, 7 insertions(+), 1 deletion(-)! 6b03bef Versão Inicial! index.html | 12 ++++++++++++! 1 file changed, 12 insertions(+)!
  126. ~/Desktop/wordcamp_ssa $ git checkout e5b676e ! !

  127. ~/Desktop/wordcamp_ssa $ git checkout e5b676e ecce_hommo.jpg! ! !

  128. ~/Desktop/wordcamp_ssa $ git checkout e5b676e ecce_hommo.jpg! ! ~/Desktop/wordcamp_ssa $!

  129. None
  130. ~/Desktop/wordcamp_ssa $ git checkout e5b676e ecce_hommo.jpg! ! ~/Desktop/wordcamp_ssa $ git

    status ! On branch restauracao! Changes to be committed:! (use "git reset HEAD <file>..." to unstage)! ! ! modified: ecce_hommo.jpg! ! ~/Desktop/wordcamp_ssa $! ! !
  131. ~/Desktop/wordcamp_ssa $ git commit -m "Retorna a Imagem Original"! [restauracao

    d6a59e3] Retorna a Imagem Original! 1 file changed, 0 insertions(+), 0 deletions(-)! rewrite ecce_hommo.jpg (97%)! ! ~/Desktop/wordcamp_ssa $!
  132. Repositórios Remotos

  133. bitbucket.org

  134. github.com

  135. None
  136. Comando git clone Clona um repositório existente

  137. ~/Documentos $ git clone https://github.com/calheira/ wordcamp_ssa ! !

  138. ~/Documentos $ git clone https://github.com/calheira/ wordcamp_ssa ! Cloning into 'wordcamp_ssa'...!

    remote: Counting objects: 18, done.! remote: Compressing objects: 100% (14/14), done.! remote: Total 18 (delta 5), reused 16 (delta 3)! Unpacking objects: 100% (18/18), done.! Checking connectivity... done.! ! ~/Documentos $!
  139. Comando git remote Gerencia repositórios remotos

  140. None
  141. None
  142. None
  143. None
  144. Git & WordPress

  145. Use o git para controlar apenas arquivos que você altera

    com frequência.
  146. Use o git para controlar apenas o seu tema filho.

  147. use o .gitignore para excluir arquivos ou diretórios sensíveis

  148. Se vai controlar conteúdo open- source o GitHub é uma

    ótima opção.
  149. Para controlar gratuitamente 
 conteúdos proprietários pode-se usar o Bitbucket.

  150. Para controlar o BD use plugin Revisr.

  151. None
  152. Onde aprender mais? http:/ /www-cs-students.stanford.edu/~blynn/ gitmagic/intl/pt_br/index.html http:/ /rogerdudler.github.io/git-guide/ index.pt_BR.html http:/

    /git-scm.com/book/pt-br/v1 http:/ /www.git-tower.com/learn/ebook/command- line/basics/what-is-version-control#start https:/ /try.github.io
  153. Perguntas?

  154. Obrigado! www.calheira.com bruno@calheira.com twitter: @brunocalheira