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

git-start: Começando no Git (BSides 8)

git-start: Começando no Git (BSides 8)

Slides da oficina "git-start: Começando no Git", ministrada na BSides São Paulo 8 em 2014, na PUC São Paulo, Campus Consolação, na sala Q*Bert.

Resumo: "O Git é uma ferramenta simples e poderosa para gerenciamento de controle de versão.Por isso, tem tido uma rápida adoção por empresas e, principalmente, por projetos Open Source. Junto com sua adoção, o Git traz um novo conceito no desenvolvimento colaborativo de software, onde sua arquitetura possibilita um desenvolvimento descentralizado. Sites como o "GitHub" tem popularizado ainda mais a adoção do Git como ferramenta de controle de versão por desenvolvedores, tendo assim mais visibilidade para compartilhar seus códigos e ideias. A oficina irá ajudar e demonstrar como utilizar o Git através de conceitos e comandos básicos para o dia a dia, além de dicas para o uso dos sites GitHub e Bitbucket.".

Fernando A. Damião

April 13, 2014
Tweet

More Decks by Fernando A. Damião

Other Decks in Programming

Transcript

  1. smallint about me •  Autor e Mantenedor do guia colaborativo

    git-start: Guia básico de Git •  Um dos fundadores do SJC Hacker Clube •  Bolsista do INPE no Programa EMBRACE – Estudo e Monitoramento BRAsileiro do Clima Espacial
  2. Se conhecendo •  Qual a experiência de vocês? •  Quantos

    são desenvolvedores? •  Alguma experiência com controle de versão ou Git? •  O que vocês esperam?
  3. O que será •  O intuito dessa oficina é demonstrar

    a utilização BÁSICA do Git VIA LINHA DE COMANDO –  Ou seja, os comandos possuem mais parâmetros, mas esse não é o foco dessa apresentação •  Dar algumas dicas sobre os sites GitHub e Bitbucket
  4. Agenda •  Controle de Versão •  Git: Histórico •  Porque

    usar Git? •  Baixando o Git •  Chave SSH •  Comandos •  Dicas e Truques para GitHub e Bitbucket
  5. Agenda •  config •  init •  clone •  remote • 

    status •  add •  rm •  commit •  push •  branch •  checkout •  fetch •  merge •  pull •  log •  help
  6. Controle de Versão •  Um software para gerenciar softwares (HUE)

    •  Controla os arquivos fontes e as versões de um software •  Permite ver a evolução do software •  Permite o trabalho em equipe de forma organizada
  7. Git: Histórico •  Sistema de Controle de Versão Distribuído • 

    Criado em 2005 por Linus Torvalds •  Usado para controlar o código do kernel Linux •  Multiplataforma
  8. Porque usar Git? •  Porque ele é rápido e leve

    •  Porque é fácil de usar •  Por ser distribuído todos tem cópias locais do repositório e somente no fim “sincronizamos” com um “servidor” –  Acredite isso faz a diferença! •  Permite trabalho sem estar conectado a rede –  Menos na hora da sincronização
  9. Considerações •  O Git não possui nenhum método de autenticação,

    ele utiliza do protocolo escolhido para o tráfego dos dados –  Por isso vamos criar uma chave SSH
  10. Considerações •  Por ser descentralizado ele não possui papéis de

    servidores e clientes definidos –  Vamos considerar o cliente uma máquina que consome repositórios e servidor uma máquina que disponibiliza repositórios.
  11. Considerações •  Como todo programa de linha de comando *nix

    quando um comando é executado com sucesso o terminal não faz nada –  Experimenta fazer algo errado pra você ver...
  12. Considerações •  O Git trabalha com diffs, então ele lida

    melhor com arquivos de texto (código fonte em geral) –  Não que ele não aceite binários, imagens por exemplo, mas é bem difícil fazer um diff de um binário
  13. Baixando o Git •  Windows –  http://git-scm.com/download/win •  Linux – 

    Debian-like –  Red Hat-like apt-get install git-core yum install git-core
  14. Chave SSH •  Gerando a chave com ssh-keygen –  Geralmente

    são usadas chaves RSA, mas isso não impede a utilização de outro algoritmo ssh-keygen –t rsa
  15. Chave SSH •  Enviando a chave •  ssh-copy-id –  Comando

    *nix •  copy-ssh-key.bat –  Script BATCH •  github.com/fadamiao/copy-ssh-key.bat –  Isso só funciona com servidores que você tem acesso
  16. Configurando o Ambiente •  Configure o nome •  Configure o

    email –  É importante configurar isso como global, pois os commits são feitos com essas informações git config -–global user.name “Seu Nome” git config -–global user.email “[email protected]
  17. Criando um repositório •  Servidor •  Cliente –  Podemos passar

    como argumento um nome de diretório e o comando o cria automaticamente git init --bare git init git init git-start
  18. Lidando com rotas •  Rotas definem de onde e para

    onde vão os commits e tags –  Por padrão sempre é criado uma rota “origin” git remote add origin url
  19. Baixando um repositório •  Clonar um repositório é a mesma

    coisa que baixar um repositório git clone <URL> git clone [email protected]:fadamiao/git-start.git
  20. Status dos arquivos •  Com esse comando podemos verificar quais

    arquivos sofreram alterações e em qual branch estamos git status
  21. Status dos arquivos •  Podemos usar o status em qualquer

    momento, isso auxilia e muito na hora de fazer um commit –  Por que? Porque o Git tem algo que se chama staging area, isso significa que suas alterações não serão registradas até um commit ser feito
  22. Enviando alterações •  O envio é feito em 3 etapas:

    •  git add/git rm •  git commit •  git push
  23. Adicionando arquivos •  Podemos adicionar arquivos específicos ou todos os

    que foram alterados git add README.md git add . git add *
  24. Removendo arquivos •  Remover arquivos é tão simples quanto adicionar

    –  Sempre exclua os arquivos via git rm, por mais que a exclusão direta remova do HD, ainda precisamos “dar baixa” no Git git rm README.md git rm file_*
  25. Deixando uma mensagem git commit –m “First inclusion of files”

    git commit •  Um commit é um marco com uma descrição do que foi alterado –  Você pode especificar na própria linha de comando
  26. Deixando uma mensagem •  Quando já inserimos um arquivo no

    repositório e fazemos alguma alteração, podemos dizer para o commit inseri-lo –  Podemos usar o –a com o -m git commit -a git commit –am “C00l m3554g3”
  27. Enviando as alterações •  Para enviar as alterações precisamos especificar

    a rota e o branch git push <ROTA> <BRANCH> git push origin master
  28. Criando uma branch •  Branch são úteis para desenvolver funcionalidades

    ou corrigir bugs sem afetar o ramo principal (master) –  Para listar as branchs, basta não específicar um nome git branch <NOME> git branch fix-001 git branch
  29. Mudando de branch •  Com a branch criada precisamos mudar

    da branch atual para a nova branch –  O –b "economiza" a criação do branch git checkout fix-001 git checkout –b fix-001
  30. Verificando atualizações •  Para verificar e baixar atualizações do repositório

    use o comando fetch –  Ele só baixa as atualizações, não faz mais nada git fetch
  31. “Mesclando” branches •  Com as alterações feitas separadamente precisamos “mesclar”

    com o que queremos –  O merge “mescla” o branch atual com o branch especificado git merge <BRANCH> git merge fix-001
  32. Atualizando e “mesclando” •  Ao invés de toda vez executar

    o fetch e o merge podemos executar um único comando git pull <REMOTE> <BRANCH> git pull origin master
  33. Vendo o histórico •  Para visualizar os commits realizados e

    seus autores, basta ver o log –  Você sai da tela digitando q git log
  34. Pedindo ajuda •  Similar ao man do linux, o Git

    possui um manual explicativo –  Se for Windows ele abrirá no browser, se for *nix ele abrirá como uma man page comum git help <COMANDO> git help push
  35. Praticando •  Crie uma conta no GitHub ou Bitbucket e

    suba os seus repositórios –  Não tenha receio ou medo de enviar e depois excluir o repositório, o importante é tentar ;D
  36. GitHub vs Bitbucket GitHub •  Git •  Colaboradores Ilimitados Gratuitos

      •  Host estático para cada repositório e pro usuário   •  Domínios customizados para os sites Bitbucket •  Git e Mercurial   •  Repositórios Privados Ilimitados Gratuitos   •  Host estático para um r e p o s i t ó r i o ( d o s e u usuário)   •  Suporta Google Analytics nos repositórios
  37. Importância do README •  Seja ele em Markdown ou texto

    “puro” um README bem escrito auxilia quem utiliza o seu projeto e até a vender a sua idéia •  Ele (ao menos) deve descrever como utilizar o que você criou
  38. Utilizando o GitHub de host gratuito •  Porque? –  As

    vezes queremos fazer um site para um projeto ou um site pessoal. •  Vantagens –  ITS FREEEE!!!!! –  Suporta domínio customizado –  Cada repositório pode ter seu próprio site •  Desvantagens –  Não suporta nenhuma linguagem server-side –  Disponibilidade depende do GitHub
  39. Utilizando o GitHub de host gratuito •  Crie um repositório

    com o nome do seu usuário .github.io –  Vale para organizações também! fadamiao.github.io sjchackerclube.github.io Site Pessoal
  40. •  Renomeie o branch •  Envie para o GitHub – 

    Note no push que após o “origin” vem o branch gh- pages Utilizando o GitHub de host gratuito git branch -m master gh-pages git push origin gh-pages Repositório somente com o site
  41. Utilizando o GitHub de host gratuito •  Crie um novo

    branch, mas órfão –  Porque isso? Porque um branch órfão não herda nenhum arquivo ou commit git checkout –-orphan gh-pages Repositório “comum” + Site do projeto
  42. git-start •  Guia colaborativo sob Creative Commons •  Repositório: github.com/fadamiao/git-start/

    •  Site: fadamiao.github.io/git-start/ •  Colabore!! (Ainda tem muito o que fazer =P)