GIT E GITHUB
COLABORAÇÃO E ORGANIZAÇÃO EM SEUS PROJETOS
CONTROLE DE VERSÃO
Hoje em dia com equipes grandes e distribuídas um projeto
dificilmente sobrevive sem um controle de versões.
!
A finalidade de um sistema de controle de versões é
gerenciar diferentes versões no desenvolvimento de
qualquer documento.
!
Soluções livres: CVS, Mercurial, SVN e Git
Soluções comerciais: SourceSafe, PVCS, ClearCase, etc
O QUE É O GIT?
✓ Sistema de controle de versões distribuído com ênfase em
velocidade
✓ Inicialmente projetado e desenvolvido por Linus Torvalds
para desenvolvimento do kernel do Linux
✓ Cada diretório de trabalho do Git é um repositório com um
histórico completo e habilidade total de acompanhamento
das revisões, não dependendo de acesso a uma rede ou
servidor central
fonte: http://pt.wikipedia.org/wiki/Git
MOTIVOS PARA USAR GIT
✓ Branches facilitados e independentes
✓ Facilidade com merges
✓ Rapidez
✓ Distribuído
✓ Ocupa menos espaço que um checkout SVN
✓ Integração GitHub
O QUE É O GITHUB?
O GitHub é uma rede social de desenvolvedores. Nela
podemos criar repositórios (públicos e privados) para nossos
projetos, seguir outros desenvolvedores, baixar projetos,
modificar projetos, receber atualizações de modificações de
projetos, etc
QUAL A RELAÇÃO DO GIT COM O GITHUB?
Os dois se integram de forma bem simples. Podemos criar
um repositório no GitHub e simplesmente “commitar" as
alterações do nosso projeto usando o Git.
!
Como exemplo, podemos criar um projeto e torná-lo público
no GitHub utilizando a ferramenta Git.
INSTALANDO O GIT
No Linux basta abrir o terminal e digitar:
sudo apt-get install git-core
!
No Windows devemos baixar a instalação através do link:
http://msysgit.github.io/
CONFIGURANDO O GIT
Após a instalação devemos configurar o Git executando os
comandos:
git config - -global user.name “Seu nome aqui”
git config - -global user.email “Seu email aqui”
!
Para ver se deu tudo certo execute:
git config - -global - - list
CRIANDO UMA CONTA NO GITHUB
Vamos acessar o página do GitHub
http://github.com
CRIANDO UM REPOSITÓRIO
Informe o nome do repositório e uma descrição sobre o
projeto. Escolha também se esse repositório será publico ou
privado.
CONFIGURANDO UMA CHAVE SSH
Tendo cadastrado e logado em sua conta do GitHub, vamos
agora configurar uma chave SSH para permitir enviar
commits para nosso repositório remoto.
!
No terminal ou Git Bash digite:
ssh-keygen -t rsa -C “seu email configura no github”
!
O comando acima vai criar um arquivo chamado id_rsa.pub.
Vamos abrir esse arquivo em qualquer editor e copiar o seu
conteúdo com CTRL+C
CONFIGURANDO UMA CHAVE SSH
Agora no GitHub, vamos em “Settings” e depois em “SSH
Keys”. Clique em “Add SSH Key” para adicionar uma nova
chave.
Informe um título para identificar seu computador e no
campo “Key" cole todo o conteúdo copiado do arquivo
id_rsa.pub.
Para testar digite o comando
abaixo no terminal:
ssh -T git@github.com
CRIANDO PROJETO LOCAL
No terminal vamos criar um diretório para nosso projeto e
iniciar um repositório Git:
!
mkdir curso-git
cd curso-git
git init
PRIMEIRO COMMIT
Vamos agora criar um arquivo e realizar o primeiro commit
do nosso projeto:
!
touch README
git commit -m “Commit inicial"
CONFIGURANDO REPOSITÓRIO REMOTO
Agora vamos configurar nosso projeto para usar nosso
repositório remoto do GitHub. No terminal digite o comando
abaixo:
!
git remote add origin https://github.com/<seu login>/curso-git.git
ENVIANDO PARA GITHUB
Para atualizar o GitHub com o que está no diretório local,
digite o comando:
!
git push origin master
ÁREAS DE OPERAÇÃO
São os locais onde os arquivos irão transitar enquanto estão
sendo editados e modificados.
!
As áreas são:
✦ Working Directory
✦ Stage Area
✦ Git Directory (.git)
GIT DIRECTORY
O diretório .git é onde o Git guarda os dados e objetos do
seu projeto. Ele é o diretório mais importante do Git e é ele
que será copiado quando alguém clonar o projeto.
WORK DIRECTORY
É onde você vai trabalhar. Os arquivos ficam ai para poderem
ser usados e alterados quantas vezes for necessário. É
basicamente a pasta do seu projeto
STAGING AREA
Quando você faz uma alteração em um arquivo, ele vai para
o Staging Area, que é uma área intermediária.
!
Basicamente o Staging Area contém o Git Directory com os
arquivos modificados, onde ele guarda as informações sobre
o que vai no seu próximo commit.
GIT ADD
Este comando adiciona arquivos que serão controlados
("versionados") pelo Git
!
Sintaxe:
git add <nome do arquivo>
!
Normalmente controlamos TUDO que está no projeto. Para
adicionar todos os arquivo usamos o comandos abaixo:
git add . ou git add *
GIT STATUS
Exibe o status do repositório. Vai exibir os novos arquivos
adicionados e arquivos que foram modificados e estão no
Staging Area
!
Sintaxe:
git status
!
GIT COMMIT
Este comando realmente confirma as alterações realizadas e
as envia para o repositório local mas não ainda para o
repositório remoto
!
Sintaxe:
git commit -m “comentários das alterações"
!
GIT PUSH
Este comando vai enviar as alterações do repositório local
para o repositório remoto se um estiver configurado
!
Sintaxe:
git push origin master
!
GIT PULL
Este comando vai atualizar nosso repositório local com todas
as alterações que estão no repositório remoto. Ele vai obter e
fazer o merge (mesclar) as alterações remotas.
!
Sintaxe:
git pull origin master
!
GIT LOG
Com esse comando podemos visualizar log de alterações do
nosso repositório. Ele exibe o nome, data e comentário de
cada commit
!
Exemplo:
git log
!
GIT DIFF
Podemos comparar a versão atual com a última versão
"commitada" com o comando git diff.
O sinal de “+" representa linhas adicionadas e o “-“ linhas
removidas.
!
Exemplo:
git diff
!
GIT RESET
Este comando nos permite remover arquivos que estão na
Staging Area, evitando assim que as modificações desse
arquivo sejam enviadas no commit.
!
Sintaxe:
git reset HEAD <nome do arquivo>
!
Sintaxe:
git reset HEAD index.html
GIT CHECKOUT
No caso de termos feito algo errado, isto é, alterado um
arquivo erroneamente. Podemos reverter as alterações locais
usando o comando git checkout - -
Esse comando vai recuperar a versão do último commit
!
Sintaxe:
git checkout - - <nome do arquivo>
!
Exemplo:
git checkout - - README
GIT FETCH E GIT RESET
Para remover todas as alterações e commits locais e
recuperar o histórico mais recente que está no servidor,
usamos os comandos git fetch e git reset
!
Exemplo:
git fetch origin
git reset - -hard origin/master
CLONANDO REPOSITÓRIOS
Quando queremos criar uma cópia local de trabalho de um
repositório remoto, usamos o comando git clone
!
Sintaxe:
git clone <caminho repositorio>
!
Exemplo:
git clone http://github.com/c0de1/curso-git
RAMIFICANDO
Branches (“ramos”) são utilizados para desenvolver
funcionalidades isoladas umas das outras. O branch master é
o branch “padrão”quando criamos um repositório.
!
Podemos usar outros branches para desenvolver mescla-os
(merge) ao branch master após a conclusão.
CRIANDO UM NOVO BRANCH
Para criar um novo branch usamos o comando git checkout
passando a opção -b
!
Sintaxe:
git checkout -b <nome do branch>
!
Exemplo:
git checkout -b nova_funcionalidade
LISTANDO BRANCHES
Para saber quais são os branches que existem em nosso
repositório usamos o comando git branch.
O branch que estiver com * no início é o branch atual
!
Exemplo:
git branch
MUDANDO DE BRANCH
Para mudar de um branch para outro, também utilizamos o
comando checkout, mas apenas informando o nome do
branch que desejamos ir.
!
Sintaxe:
git checkout <nome do branch>
!
Exemplos:
git checkout master
git checkout nova_funcionalidade
BRANCHES SÃO LOCAIS
Por padrão um branch sempre vai residir localmente e não
estará disponível a outros a menos que nós enviamos esse
branch para o repositório remoto.
!
Exemplo:
git push origin nova_funcionalidade
MESCLANDO BRANCHES
Uma vez que terminamos o desenvolvimento da nova
funcionalidade em um branch separado, é hora de mesclá-lo
com o branch padrão (master).
Para isso devemos selecionar o branch padrão (master) e
executar o comando git merge.
!
Sintaxe:
git merge <nome do branch>
!
Exemplo:
git checkout master
git merge nova_funcionalidade
EXCLUINDO BRANCHES
Após fazer o merge de um branch com o branch padrão
(master) é comum excluirmos esse branch. Para isso usamos
o comando git branch com a opção -d
!
Sintaxe:
git branch -d <nome do branch>
!
Exemplo:
git branch -d nova_funcionalidade
GITIGNORE
Normalmente em projetos temos alguns arquivos que não
são necessários serem mantidos no repositório por exemplo:
!
✦ Arquivos de logs
✦ Arquivos .class em projetos Java
✦ Arquivos de configurações contendo senhas
✦ Etc
!
Para o Git ignorar esses arquivos automaticamente, podemos
criar um arquivo chamado .gitignore na raiz do nosso projeto
e dentro de arquivo informar quais padrões de arquivos
serão ignorados
PRA SABER MAIS
Usando Git com NetBeans IDE
https://netbeans.org/kb/docs/ide/git_pt_BR.html
!
Usando Git no Eclipse
http://jandersonantunes.blogspot.com.br/2013/09/git-no-eclipse-
parte-i.html
!
Git Book
http://git-scm.com/book
THANK YOU
Prof. Leonardo Marcelino
!
leonardo.marcelino@gmail.com
leonardo.marcelino@unifeob.edu.br
https://twitter.com/leonardom
https://www.facebook.com/leomarcelino