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

Desvendando o Git & GitHub

Desvendando o Git & GitHub

- Introdução a diversos tópicos relacionado ao Git e GitHub:
----- Conceitos de Controle de Versão
----- Controle de versão com o Git
----- Como usar o GitHub
----- Como usar o SourceTree para trabalhar com Git e GitHub

- Exemplos práticos de uso do Git para controle de versão

- Como trabalhar em equipe com o Git
----- Evitando conflitos
----- Resolvendo conflitos

- Workflow típico de uso do Git para consulta rápida

- Tutoriais diversos de como utilizar o Git

Rodrigo Barros Bernardino

August 25, 2015
Tweet

More Decks by Rodrigo Barros Bernardino

Other Decks in Programming

Transcript

  1. Escreva uma Redação • Quais os passos a seguir? 1.

    Sentar 2. Escrever 1x 3. Entregar 4. Falta algo?
  2. Escreva uma Redação • Quais os passos a seguir? ◦

    Sentar ◦ Escrever ◦ Revisar ◦ Entregar • Razão: escolhas N vezes
  3. Escreva uma Redação • Quais os passos a seguir? ◦

    Sentar ◦ Escrever ◦ Revisar ◦ Entregar ◦ <img varios papeis> N vezes
  4. Escreva uma Redação • Manter versões antigas • Lembrar palavra

    • Lembrar frase • Porque ◦ Muitas formas de dizer ◦ Muitos caminhos diferentes
  5. Programando Sem Limites 1. Escreve 2. Testa a. Erro b.

    OK! 3. Prox Passo a. Escreve, testa, etc. Controle de versão
  6. Programando Sem Limites • Cria Y • Y funciona •

    Modifica X • X funciona Controle de versão
  7. Programando Sem Limites • Cria Y • Y funciona •

    Modifica X • X funciona • Y dá erro • Não sei onde mexi! Controle de versão
  8. Programando Sem Limites • Prog. A: “dono” do arquivo X

    • Prog. B: “dono” do arquivo Y Controle de versão 1. A: altera arquivo X a. altera um pouco de Y b. X funciona, Y dá erro 2. B: percebe erro em Y
  9. Programando Sem Limites • Prog. A: “dono” do arquivo X

    • Prog. B: “dono” do arquivo Y Controle de versão 1. A: altera arquivo X a. altera um pouco de Y b. X funciona, Y dá erro 2. B: percebe erro em Y a. Não consegue resolver
  10. Programando Sem Limites • Prog. A: “dono” do arquivo X

    • Prog. B: “dono” do arquivo Y Controle de versão 1. A: altera arquivo X a. altera um pouco de Y b. X funciona, Y dá erro 2. B: percebe erro em Y a. Não consegue resolver b. A viajou
  11. Programando Sem Limites • Prog. A: “dono” do arquivo X

    • Prog. B: “dono” do arquivo Y Controle de versão 1. A: altera arquivo X a. altera um pouco de Y b. X funciona, Y dá erro 2. B: percebe erro em Y a. Não consegue resolver b. A viajou c. se mata?
  12. Programando Sem Limites • Prog. A: “dono” do arquivo X

    • Prog. B: “dono” do arquivo Y Controle de versão 1. A: altera arquivo X a. altera um pouco de Y b. X funciona, Y dá erro 2. B: percebe erro em Y a. Não consegue resolver b. A viajou c. se mata Usa o Git!
  13. Ta, e onde entra o Git? • Só mais uma

    coisa... • Você já instalou? • SourceTree ◦ Todas as funcionalidades ◦ Interface gráfica ◦ Bonito e intuitivo ◦ Servidores: GitHub, BitBucket... ◦ https://www.sourcetreeapp.com/
  14. Mas afinal, o que é Git? • Sistema de Controle

    de Versão (VCS) ◦ Histórico de alterações • Distribuído (D-VCS) • Colaborativo • +GitHub → Social coding
  15. Afinal, o que é Git? • Sistema de Controle de

    Versão (VCS) ◦ Histórico de alterações • Distribuído (D-VCS) • Colaborativo • +GitHub → Social coding
  16. Controle de Versão: Dropbox • Free: 30 dias de histórico

    • Todo e qualquer arquivo • Plano pago: 1 ano de histórico
  17. Controle de Versão: Google Drive • Free: ◦ max 200

    versões permanentes ◦ max 100 versões (automático) ◦ deleta versões extra a cada 30 dias • Todo e qualquer arquivo • Detalhamento para Docs
  18. Git: Conceitos • Repositório (repository - repo) 1. Grupo de

    arquivos ▪ Organizado por pastas ▪ Representa um projeto
  19. Git: Conceitos • Repositório (repository - repo) 1. Grupo de

    arquivos ▪ Organizado por pastas ▪ Representa um projeto 2. Histórico de Revisões
  20. 1. 1. Cadastro - http://github.com 2. Software - http://desktop.github.com 3.

    GitHub → Criar repo local - “testeGit” 4. Criar 3 arquivos - (.txt + .jpg + .zip) 5. Verificar mudanças locais 6. Criar repositório público (“Publish”) 7. Verificar mudanças remotas Meu primeiro repo
  21. Git: Conceitos • Repositório (repository - repo) ◦ Grupo de

    arquivos ◦ Organizado por pastas ◦ Representa um projeto ◦ Histórico de Revisões ▪ Indexado (biblioteca)
  22. Git: Conceitos • Repositório (repository) ◦ Grupo de arquivos ◦

    Organizado por pastas ◦ Representa um projeto ◦ Histórico de Revisões ▪ Indexado (biblioteca) ▪ .git
  23. Git: Conceitos • Revisão (revision) ◦ Versão ◦ Projeto inteiro

    ▪ Mudei só 1 arquivo ▪ Mudei vários arquivos • Visualizar histórico ◦ Arquivo ◦ Projeto ◦ Quem, Quando, Onde e Porque alterou
  24. Git: Conceitos • Revisão e Tamanho do Projeto ◦ Projeto

    inteiro ◦ Cópias do inalterado? ◦ Tamanho?
  25. Git: Repositórios • Remotos (remote) ◦ Nuvem ◦ GitHub ◦

    Cópia dos arquivos • Locais (local) ◦ Onde as mudanças ocorrem ◦ Recebe mudanças (pull - puxar) ◦ Envia mudanças (push - empurrar) 1. Arquivos locais com Versão Atual 2. Histórico de revisões (Versões Anteriores) a. Projeto inteiro b. Logo, cada arquivo
  26. Git: Repositórios • Remotos (remote) ◦ Nuvem ◦ GitHub ◦

    Cópia dos arquivos • Locais (local) ◦ Onde as mudanças ocorrem ◦ Recebe mudanças (pull - puxar) ◦ Envia mudanças (push - empurrar) 1. Arquivos locais com Versão Atual 2. Histórico de revisões (Versões Anteriores) a. Projeto inteiro b. Logo, cada arquivo
  27. Git: Repositórios • Remotos (remote) ◦ Nuvem ◦ GitHub ◦

    Cópia do repo local • Locais (local) ◦ Onde as mudanças ocorrem ◦ Sync: atualiza c/ mudanças ▪ Recebe do remoto ▪ Envia para remoto
  28. Git: Criando Revisão • Transações (tradicional) Caixa Eletrônico Central (banco)

    Efetuando Transação R$ 100 → R$ 20 Trans: - R$ 80 << apenas isso >> Sync -50 +10 -30 ... Novo: - R$ 80 << tudo >>
  29. Git: Conceitos • Commit ◦ cria revisão ◦ altera repo

    local • Escolha ◦ O que “commitar” ◦ Checkbox • Push / Empurrar / Enviar ◦ Aplica no repo remoto
  30. Explorando o GitHub (Site) 1. Perfil 2. Dashboard 3. Seus

    repo (próprios, colaborador, watching) 4. Criar pelo site 5. Navegar pelos arquivos 6. Navegar pelas versões 7. Adicionar contribuidor
  31. Explorando o SourceTree • Clone / New • Commit •

    Discard • Push / Pull • Tag • Stash • Log / History • Checkout • • • • • • • • Clonar / Novo Commit Descartar Enviar / Puxar Etiqueta Esconder Log / Histórico Cheque
  32. Colaborativo 1. Me digam seus username (evento fb) 2. Clone

    do meu repo aulaGit 3. Add como contribuidores 4. Abra arquivo_de_texto.txt 5. Alguém muda linha 6. 6. Todos atualizam 2.
  33. Merge Manual 1. Pessoa A altera arquivo (Linha 7) 2.

    Pessoa B altera mesmo arquivo (Linha 11) 3. A: commita 4. B: tenta Puxar → Erro! 5. Copia arquivo modificado (pra fora) 6. Puxar → Ver mudanças → Altera linha 11 3.
  34. Merge automático 1. Pessoa A altera arquivo X a. Acrescenta:

    “mudei arquivo X!” 2. Pessoa B altera arquivo Y 3. A: commita 4. B: tenta Puxar → nova bolinha / revisão! a. Ver mudança do outro em X b. Commita suas mudanças 5. C: verifica X e Y (puxar) 4.
  35. 1. A modifica X → commita 2. B modifica Y

    → commita 3. A modifica Z → commita 4. C modifica W → commita 5. A -- Envia → remoto (1o a enviar) 6. B -- Envia → remoto 7. C -- Envia → remoto Commit Simultâneo 5.
  36. Git: Regras para uso Básico 1. Uma pessoa por arquivo

    2. “Puxar” antes de alterar 3. Alterar normalmente… 4. “Puxar” depois de alterar, antes do commit 5. Sempre fazer commit ao terminar 6. Sempre fazer “Enviar” após commitar a. A → arq. X b. B → arq. Y c. B --?-- X → (avisa A)
  37. Git: 1 Arquivo, N Pessoas 1. “Puxar” antes de alterar

    2. Alterar normalmente... 3. “Esconder” antes de puxar 4. “Puxar” mais uma vez… 5. Conflitos? Edite manualmente 6. Fazer commit 7. “Enviar” Apenas Texto • Código fonte • .txt
  38. Git: Workflow Básico 1. Sentar na frente do PC 2.

    Puxar 3. Desenhar, programar, musicar(o.õ?) 4. Acabei meu trabalho! =) 5. Puxar novamente! 6. Commit 7. Enviar
  39. .gitignore • Extensões de arquivos irrelevantes ◦ Arquivos temporários ◦

    Configurações do usuário • Templates ◦ Windows / Linux / Mac ◦ C++ ◦ Java ◦ etc...
  40. Mais detalhes • Git pro (livro online gratuito - pt-br

    também!) ◦ https://git-scm.com/book/pt-br/v1 • Try it! ◦ https://try.github.io/levels/1/challenges/4 • Breve introdução para não programadores ◦ http://blog.scottlowe.org/2015/01/14/non-programmer- git-intro/ • Guia breve, mas detalha principais conceitos ◦ http://rogerdudler.github.io/git-guide/