Slide 1

Slide 1 text

git-start: Começando no Git Campus Party Brasil 7 28 de Janeiro de 2014

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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?

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Agenda • Controle de Versão • Git: Histórico • Porque usar Git? • Baixando o Git • Chave SSH • Comandos • Dicas e Truques para GitHub e Bitbucket

Slide 6

Slide 6 text

Agenda • config • init • remote • status • add • rm • commit • push • clone • branch • checkout • fetch • merge • pull • log • help

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Quem usa?

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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.

Slide 13

Slide 13 text

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...

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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]

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Lidando com rotas • Renomear uma rota é simples, basta dizer o nome atual e o novo nome git remote rename git remote rename origin destination

Slide 22

Slide 22 text

Lidando com rotas • Imagine que a somente a URL esteja errada, set-url git remote set-url git remote set-url origin git@server:repo

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Lidando com rotas • Quando você tem mais de uma rota é interessante saber para onde vai git remote -v

Slide 25

Slide 25 text

Status dos arquivos • Com esse comando podemos verificar quais arquivos sofreram alterações e em qual branch estamos git status

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

Enviando alterações • O envio é feito em 3 etapas: • git add/git rm • git commit • git push

Slide 28

Slide 28 text

Adicionando arquivos • Podemos adicionar arquivos específicos ou todos os que foram alterados git add README.md git add . git add *

Slide 29

Slide 29 text

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_*

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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”

Slide 32

Slide 32 text

Enviando as alterações • Para enviar as alterações precisamos especificar a rota e o branch git push git push origin master

Slide 33

Slide 33 text

Baixando um repositório • Clonar um repositório é a mesma coisa que baixar um repositório git clone git clone [email protected]:fadamiao/git-start.git

Slide 34

Slide 34 text

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 git branch fix-001 git branch

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

“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 git merge fix-001

Slide 38

Slide 38 text

Atualizando e “mesclando” • Ao invés de toda vez executar o fetch e o merge podemos executar um único comando git pull git pull origin master

Slide 39

Slide 39 text

Vendo o histórico • Para visualizar os commits realizados e seus autores, basta ver o log – Você sai da tela digitando q git log

Slide 40

Slide 40 text

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 git help push

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

Dicas e Truques para GitHub e Bitbucket

Slide 43

Slide 43 text

Agenda • GitHub vs Bitbucket • Importância do README • Utilizando o GitHub de host gratuito

Slide 44

Slide 44 text

GitHub vs Bitbucket GitHub Bitbucket

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

• 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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

Encerramento

Slide 52

Slide 52 text

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)

Slide 53

Slide 53 text

Cliente Gráfico • http://sourcetreeapp.com/

Slide 54

Slide 54 text

Obrigado a todos!!! =D fadamiao fa_damiao smallintabout.me