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

Just do git

Just do git

Introductory git talk given at St. Thomas University of Mozambique in September 2016 for the Graduating Software Engineering of the same year

Avatar for Paulo Phagula

Paulo Phagula

October 16, 2016
Tweet

More Decks by Paulo Phagula

Other Decks in Programming

Transcript

  1. Sumário •  Porquê precisamos de VCS? •  Git - Introdução

    •  Setup – Instalação e configuração •  Básico – Usando a linha de comando •  Git Flow - Branching; Merging; Version Tagging •  Colaboração com GitHub / Bitbucket / Gitlab •  Conclusão
  2. Porquê precisamos de VCS? •  A necessidade de ter uma

    forma lógica de organizar e controlar revisões existe quase desde que conhecemos a escrita •  Edições de livros são um exemplo disso na era do “print” -- mas sempre existiram a borracha e o corrector •  Hoje, na era digital, os VCS podem ser encontrados embutidos em editores de texto e folhas de cálculo (CTRL+Z ou CTRL+Y)
  3. •  Em desenvolvimento de software, muitos desenvolvedores escrevem colaboram e

    precisam alterar código geralmente em simultâneo •  O controle de revisões permite-nos reverter um documento a uma versão anterior, corrigir falhas, explorar novas ideias sem afectar o documento original e proteger-nos de vandalismo •  Mais ainda, permite-nos ter uma visão clara sobre quando uma modificação foi feita, quem a fez e porquê, e o que foi modificado
  4. Git •  Criado por Linus Torvalds em 2005, é um

    sistema de controle de revisões e versões distribuído, desenhado para lidar com projetos pequenos assim como grandes com velocidade e eficiência. •  Revisão – um ficheiro passa por várias revisões •  Versão – marca o estado do repositório como um todo em relação a um conjunto de ficheiros e suas revisões individuais
  5. Centralizado vs. Distribuído •  Pouca autonomia •  Trabalho privado limitado

    •  Risco de perda de dados •  Autonomia •  Rapidez •  Trabalho Privado •  Confiabilidade
  6. O Que oferece? •  Ramificação e integração (branch e merge)

    •  Velocidade (comparativamente a outros SCM) •  Distribuição com suporte a fluxos diferentes •  Fiabilidade e Segurança de Dados •  Staging Area – Staging de porções de um ficheiro modificado ou da Working Tree •  Open Source e Gratuito
  7. Instalação •  Geralmente já vem instalado no Linux e Mac

    OS mas é sempre bom actualizar •  https://git-scm.com/downloads
  8. Configuração •  O git usa os nossos usernames para associar

    commits as nossas identidades git config user.name “<nome>” git config --global user.name “<nome>” git config user.email “<nome>” git config --global user.email “<nome>” git config --global core.editor “<editor>”
  9. O Básico •  Criar e Clonar repositórios •  Estrutura e

    histórico repositório •  Adicionando, remover ficheiros e staging area •  Ignorando ficheiros •  Branches, Merges e Pull Requests
  10. Criando repositorios •  git init – transforma o directório actual

    em um repositório git, criando o sub-directório “.git” •  git init <directorio>
  11. Clonando Repositorios git clone <repo> [<dir>] •  Clona o repositório

    <repo> para a máquina local. •  git clone git@github:... •  git clone https://github... •  git clone /mydir/path
  12. Preparando para gravar as alteraçoes •  git add <file|dir> Adiciona

    as mudanças do arquivo ou directório para o próximo commit. O arquivo passa a ser rastreado •  git reset | git checkout <file> Remove as mudanças do arquivo para o próximo commit •  git rm –cache <file> Para de rastrear o arquivo
  13. Gravando alterações •  git commit Realiza o commit e abre

    o editor para inserir a mensagem •  git commit –a Adiciona as mudanças dos arquivos já rastreados e realiza o commit. O editor será aberto •  git commit –m “<msg>” Realiza o commit, com a mensagem dada. Nota: Não é boa prática use sempre um template definido pela sua equipa
  14. Ignorando ficheiros com .gitignore Ficheiro que instrui ao git para

    ignorar ficheiros que obedecem a aos patterns definidos nele. # dotenv **/.env **/.env.* **/env.ini !**/.env.example !**/env.ini.example **/env **/lib Thumbs.db
  15. Analisando os arquivos na staging área •  Staging area é

    a área transitória em que os ficheiro ficam antes do commit •  git status [-s] Lista os arquivos que estão e que não estão na staging area, e os arquivos que não estão sendo rastreados.
  16. Diferença entre commits •  git diff <commit> – Exibe a diferença

    nos arquivos entre o commit <commit> e o directório de trabalho •  git diff --cached <commit> – Exibe a diferença nos arquivos entre o commit <commit> e a área transitório
  17. Tagging / Versionamento •  git tag Lista as tags existentes

    •  git tag -l <tag pattern> Procura tags que obedeçam ao padrão •  Falando nisso: Sabe o que é semver? •  2.3.1-RC2 •  Major. Minor. Patch - Pre-Release •  Breaking. Non-breaking. Bug Fix – Pre-Release –  Pre-Release: Alpha, Beta, RC, “stable” –  http://semver.org