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