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 
Na tela inicial do GitHub, clique em New Repository
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.
COMANDOS DO GIT
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

Git e GitHub

  • 1.
    GIT E GITHUB COLABORAÇÃO E ORGANIZAÇÃO EM SEUS PROJETOS
  • 2.
    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
  • 3.
    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
  • 4.
    MOTIVOS PARA USARGIT ✓ Branches facilitados e independentes ✓ Facilidade com merges ✓ Rapidez ✓ Distribuído ✓ Ocupa menos espaço que um checkout SVN ✓ Integração GitHub
  • 5.
    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
  • 6.
    QUAL A RELAÇÃODO 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.
  • 7.
    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/
  • 8.
    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
  • 9.
    CRIANDO UMA CONTANO GITHUB Vamos acessar o página do GitHub http://github.com
  • 10.
    CRIANDO UM REPOSITÓRIO Na tela inicial do GitHub, clique em New Repository
  • 11.
    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.
  • 12.
    CONFIGURANDO UMA CHAVESSH 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
  • 13.
    CONFIGURANDO UMA CHAVESSH 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
  • 14.
    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
  • 15.
    PRIMEIRO COMMIT Vamosagora criar um arquivo e realizar o primeiro commit do nosso projeto: ! touch README git commit -m “Commit inicial"
  • 16.
    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
  • 17.
    ENVIANDO PARA GITHUB Para atualizar o GitHub com o que está no diretório local, digite o comando: ! git push origin master
  • 18.
    Á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)
  • 19.
    GIT DIRECTORY Odiretó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.
  • 20.
    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
  • 21.
    STAGING AREA Quandovocê 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.
  • 23.
  • 24.
    GIT ADD Estecomando 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 *
  • 25.
    GIT STATUS Exibeo status do repositório. Vai exibir os novos arquivos adicionados e arquivos que foram modificados e estão no Staging Area ! Sintaxe: git status !
  • 26.
    GIT COMMIT Estecomando 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" !
  • 27.
    GIT PUSH Estecomando vai enviar as alterações do repositório local para o repositório remoto se um estiver configurado ! Sintaxe: git push origin master !
  • 28.
    GIT PULL Estecomando 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 !
  • 29.
    GIT LOG Comesse 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 !
  • 30.
    GIT DIFF Podemoscomparar 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 !
  • 31.
    GIT RESET Estecomando 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
  • 32.
    GIT CHECKOUT Nocaso 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
  • 33.
    GIT FETCH EGIT 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
  • 34.
    CLONANDO REPOSITÓRIOS Quandoqueremos 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
  • 35.
    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.
  • 36.
    CRIANDO UM NOVOBRANCH 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
  • 37.
    LISTANDO BRANCHES Parasaber 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
  • 38.
    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
  • 39.
    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
  • 40.
    MESCLANDO BRANCHES Umavez 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
  • 41.
    EXCLUINDO BRANCHES Apósfazer 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
  • 42.
    GITIGNORE Normalmente emprojetos 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
  • 44.
    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
  • 45.
    THANK YOU Prof.Leonardo Marcelino ! leonardo.marcelino@gmail.com leonardo.marcelino@unifeob.edu.br https://twitter.com/leonardom https://www.facebook.com/leomarcelino