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

git-start: Começando no Git (CPBR7)

git-start: Começando no Git (CPBR7)

Slides da oficina "git-start: Começando no Git", ministrada na Campus Party Brasil 7 em 2014, pela área de Software Livre, palco Workshop III.

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

January 28, 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 • remote • status •

    add • rm • commit • push • clone • 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 • Multiplataforma • Criado para controlar o código do kernel Linux
  8. Porque usar Git? • Porque ele é rápido e leve

    • Porque é fácil • 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. Lidando com rotas • Renomear uma rota é simples, basta

    dizer o nome atual e o novo nome git remote rename <ROTA-ATUAL> <ROTA-NOVA> git remote rename origin destination
  20. Lidando com rotas • Imagine que a somente a URL

    esteja errada, set-url git remote set-url <ROTA> <URL> git remote set-url origin git@server:repo
  21. Lidando com rotas • Para remover uma rota é simples

    como remover um arquivo – Cuidado, sempre deixe a rota origin, afinal precisamos enviar ou receber alterações de algum lugar git remote rm origin
  22. Lidando com rotas • Quando você tem mais de uma

    rota é interessante saber para onde vai git remote -v
  23. Status dos arquivos • Com esse comando podemos verificar quais

    arquivos sofreram alterações e em qual branch estamos git status
  24. 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 signifca que suas alterações não serão registradas até um commit
  25. Enviando alterações • O envio é feito em 3 etapas:

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

    que foram alterados git add README.md git add . git add *
  27. 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_*
  28. 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
  29. 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”
  30. Enviando as alterações • Para enviar as alterações precisamos especificar

    a rota e o branch git push <ROTA> <BRANCH> git push origin master
  31. 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
  32. 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
  33. 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
  34. 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
  35. “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
  36. 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
  37. Vendo o histórico • Para visualizar os commits realizados e

    seus autores, basta ver o log – Você sai da tela digitando q git log
  38. 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
  39. 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
  40. 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 repositório (do seu usuário) • Suporta Google Analytics nos repositórios
  41. 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
  42. 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
  43. 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
  44. • 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
  45. 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
  46. 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)