Desmistificando a
ferramenta git
Diogo Machado
• Desenvolvedor web à 4 anos
e meio na São Camilo ES;
• Formado pelo IFES;
• Já participei de mais de 20
projetos de software;
• Destaque na revista Galileu
em 2011 pelo projeto
Educação na nuvem;
• Empreendedor;
Como você faria para trabalhar em um software
desenvolvido em grupo com um colega hoje?
Git é uma ferramenta para registrar alterações
feitas em um conjunto de arquivos ao longo do
tempo, uma tarefa tradicionalmente conhecida
como "controle de versão"
Linus Torvalds
Criador do Git
• Verificar o estado do seu projeto em qualquer ponto
no passado;
• Mostrar diferenças entre diversos estágios;
• Dividir o desenvolvimento em frentes de trabalho,
os chamados "branches";
• Recombinar periodicamente os branches em um
processo chamado de merge;
• Permitir que muitas pessoas trabalhem
simultaneamente;
Instalação
Instalação
sudo apt-get install git
Configurações básicas
git config --global user.name "Diogo Machado"
git config --global user.email diogo@diogomachado.com
git config --global color.ui auto
Repositório central no nosso
servidor
mkdir ifes.git
git init --bare --bare porque esse repositório será
nossa base para que outras pessoas
possam baixar e atualizar o projeto
Para seguirmos um padrão adotado
pelos desenvolvedores, vamos criar a
pasta com final .git
clone
Quando clonamos um projeto git do repositório central
Clonando nosso projeto
git clone root@192.168.201.48:/git/<nomeprojeto>.git
Podemos também iniciar um
repositório e adicionar o remoto
cd <diretorio>
git init
git remote add origin root@123.123.234.23:~/git/ifes.git
git pull origin master
pull
Significa que vamos puxar todas as atualizações do
projeto
Adicionando arquivos para
rastrear mudanças
git add .
git add <nomearquivo> Podemos também adicionar apenas um
arquivo, ou um diretório inteiro para ser
rastreado pelo git.
O ponto fala para o git adicionar todos
os arquivos da pasta para serem
rastreados
Ignorando pastas
touch .gitignore Este arquivo irá dizer ao git para ignorar
tudo que for passado de parâmetro nele
"Commitando"
git status
git commit -m "Banner rotativo add"
Passamos -m para descrevermos a
nossa alteração.
Antes de commitar, nós podemos ver o
que está na lista para ser rastreado.
commit
É quando nós rotulamos para o git o que foi feito
Verificando o log
git log
Verificando o log + arquivos alterados
git log --stat
push
Significa que enviar todas as atualizações do projeto
Enviando alterações para o
repositório central
git push origin master
Depois de adicionado os arquivos e
comitado, nós vamos enviar nossas
alterações para o repositório central que
criamos no nosso servidor
branch
É uma frente de trabalho, ramificação. Por padrão
trabalhamos na branch Master
master
banner-rotativo
Até aqui, nós:
Temos um repositório central
Adicionamos nossos arquivos
Comitamos, dizendo o que foi feito
Enviamos para o servidor
Criando uma branch
git checkout -b "nova-feature"
Verificando em qual brach está
git branch
"Andando" de uma branch para a outra
git checkout master O git só me deixa ir para outra branch
assim que eu commitar todas as
alterações realizados nos arquivos
rastreados. Se não fiz nada, ele anda de
voltar para o master.
Enviando a branch para o servidor
git push origin nova-feature
merge
Quando unimos duas branchs
Fazendo merge de uma branch
git push origin nova-feature
Verificar todas suas branchs, tanto
locais quanto remotas
git branch -a
E se meu colega comitou e enviou uma
alteração e eu não baixei e estou tentando
enviar com push para o repositório?
Vai te pedir para fazer um git pull origin master
Auto-merge Conflito no merge
Irá fazer um merge automático
dos arquivos.
Vai te avisar de conflitos, e
automaticamente irá lhe
apresentar dentro do arquivo as
diferenças entre um commit e
outro.
Adicione os arquivos corrigidos e manda denovo.
1ª possibilidade 2ª possibilidade
E se eu já adicionei e commitei, mas não
enviei para o servidor, e quero voltar?
Voltando um commit
git reset --soft HEAD~1 Irá voltar o commit mantando as últimas
alterações realizadas no git,
possibilitando fazermos um pull ou
mesmo um novo commit
Lembre-se SEMPRE
Sempre dar git pull origin master
Não se esquecer te commitar suas
alterações antes de ir embora.
E se eu quiser manter mais de um repositório
central?
Adicionando repositório
remoto
git remote add deploy ubuntu@182.123.213.23:~/git/ifes.git
Após o add nós nomeamos como
quisermos, por padrão temos sempre o
origin que indica nossa branch master.
Enviando para os dois
git push deploy master; git push origin master;
Excluir arquivos não
rastreados
git clean -f
Aplicativos para Git
https://git-scm.com/downloads/guis
• Rede social
• Repositórios públicos
• Repositórios privados
• Conta empresa
• Repositórios públicos
• Repositórios privados
• Conta empresa
• Outras ferramentas
Links úteis
• http://rogerdudler.github.io/git-guide/index.pt_BR.html (Guia prático)
• https://git-scm.com/ (Site oficial)
• http://try.github.com/ (Site interativo)
diogo@diogomachado.com
Obrigado :)

Desmistificando a ferramenta git