RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
sistema de
controle de
versão
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
cronograma
o que é?
como era antes?
qual a finalidade?
como funciona?
história e criação
quais as vantagens ?
vamos à prática!
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
O QUE É GIT ?
SISTEMA DE CONTROLE DE
VERSÃO DISTRIBUÍDO
usado principalmente no desenvolvimento de software, mas
pode ser usado para registrar o histórico de edições de
qualquer tipo de arquivo
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
COMO ERA ANTES DO GIT
• gritaria para fechar arquivo
• trabalho perdido / apagado, salvo por cima
• sem compatibilização
• sem histórico de alterações
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
COMO ERA ANTES DO GIT
Em 2002, o projeto do kernel do Linux começou a usar
um sistema DVC (controle versão distribuído)
proprietário chamado BitKeeper.
Patch é um programa de computador criado para atualizar ou corrigir um software de forma a
melhorar sua usabilidade ou performance
BitKeeper é um sistema de controle de versão distribuído de códigos fonte
Durante a maior parte do período de manutenção do kernel do Linux,
as mudanças no software eram repassadas como patches e arquivos
compactados.
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
COMO É O
CONTROLE DE
VERSÃO
gerencia e registra todas as
alterações feitas em um
diretório
permite recuperar versões
específicas quando houver essa
necessidade
não dependente de acesso a
uma rede ou a um servidor
central
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
repositório
quando a estação de trabalho
quer modificar algo no
software, ela vai até o
repositório, busca a versão
mais atualizada, traz para a
estação, altera, edita,
modifica e manda de volta
estação 1 estação 2 estação 3
programadores
Servidor Central
/ Dados Projeto
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
repositório
esta nova versão é mesclada
com tudo com o que já existe
e que veio de outras estações,
formando assim um novo
software completo com uma
parte vinda de cada estação
estação 1 estação 2 estação 3
versão de
trabalho
versão de
trabalho
versão de
trabalho
Servidor Central
/ Dados Projeto
versão 1
versão 2
versão 3
versão n
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
SISTEMA
DISTRIBUÍDO
COMO FUNCIONA?
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
SISTEMA DISTRIBUÍDO
A CÓPIA DE CADA VERSÃO QUE ESTA SENDO
DESENVOLVIDA OU QUE FOI DESENVOLVIDA ESTARÁ EM
TODAS AS ESTAÇÕES DE TRABALHO
QUE ESTIVEREM TRABALHANDO NAQUELE SISTEMA E
NÃO SÓ NO REPOSITÓRIO
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
repositório
estação 1 estação 2 estação 3
versão de
trabalho
versão de
trabalho
versão de
trabalho
Servidor Central
/ Dados Projeto
versão 1
versão 2
versão 3
versão n
v1
v2
v3
vn
v1
v2
v3
vn
v1
v2
v3
vn
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
como funciona o
versionamento?
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
um histórico de commits pequeno e simples
COMMIT branch padrão
master
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
você criará um branch novo para trabalhar na tarefa (issue) #53
BRANCH branch padrão
master
branch criado
iss53
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
ao criar novos commits, o branch iss53 avançará, pois você fez
o checkout dele (isto é, seu HEAD está apontando para ele)
COMMIT branch padrão
master
branch criado
iss53
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
o diretório do seu projeto está exatamente do jeito que estava
antes de você começar a trabalhar na tarefa #53 (C4)
agora você tem uma correção para fazer, então criaremos um
branch para a correção (hotfix) para trabalhar até a conclusão
É importante lembrar desse ponto:
Git restabelece seu diretório de
trabalho para ficar igual ao snapshot
do commit que o branch que você
criou aponta. Ele adiciona, remove, e
modifica arquivos automaticamente
para garantir que sua cópia é o que o
branch parecia no seu último
commit nele
BRANCH branch padrão
master
branch criado
iss53
branch criado
hotfix
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
depois de sua correção ser enviada, a branch hotfix poderá
ser apagada
o branch master aponta para o mesmo local.
crie o próximo commit (C5)
BRANCH branch padrão
master
branch criado
iss53
branch apagado
hotfix
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
quando você tenta fazer o merge de um commit com outro
que pode ser alcançado seguindo o histórico do primeiro, Git
simplifica as coisas movendo o ponteiro adiante porque não
existe modificações divergente para fazer o merge — isso é
chamado de "fast forward"
COMMIT branch padrão
master
branch criado
iss53
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
mesclando versões
merge
rebase
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
MERGE branch padrão
master
branch criado
iss53
em vez de simplesmente avançar o ponteiro
do branch adiante, Git cria um novo
snapshot que resulta do merge de três vias
automaticamente cria um novo commit que aponta
para ele isso é conhecido como um merge de
commits e é especial pois tem mais de um pai
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
C0 C1 C2 C4 C3’
C3
master
experiment
Com o comando REBASE, você pode pegar todas as mudanças que
foram commitadas em um branch e replicá-las em outro.
Ele vai ao ancestral comum dos dois branches (no que você está e no
qual será feito o rebase), pega a DIFERENÇA (diff) DE CADA COMMIT do
branch que você está, salva elas em um arquivo temporário, restaura o
brach atual para o mesmo commit do branch que está sendo feito o
rebase e, finalmente, aplica uma mudança de cada vez.
REBASE
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
C0 C1 C2 C4 C3’
master
experiment
MERGE FAST FORWARD
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
C0 C1 C2 C5 C6
server
master
C3 C4 C10
client
C8 C9
VÁRIAS RAMIFICAÇÕES (BRANCHES)
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
C0 C1 C2 C5 C6
server
master
C3 C4 C10
client
C8 C9
C9’
Faça o checkout do branch client, compara as
alterações do ancestral em comum aos
branches client e server e promova para o master
C8’
REBASING CLIENT
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
C0 C1 C2 C5 C6
server
C3 C4 C10
client
C9’C8’
master
FAST FORWARD
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
C0 C1 C2 C5 C6
C3 C4 C10
client
C9’C8’
master
C4’ C10’
server
REBASE SERVER
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
C0 C1 C2 C5 C6 C9’C8’ C4’ C10’
master
APAGANDO OS BRANCHES SEM USO
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
MESCLAGEM DE VERSÕES
VANTAGENS DESVANTAGENS
MERGE operação não destrutiva
commit extra
histórico poluído
REBRASE
histórico linear
evita commits vazios
perde a ordem
cronológica
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
história e criação
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Desenvolvido por Linus Tovalds
• engenheiro de software, nascido na Finlândia e naturalizado estado-
unidense em 2010.
• o relacionamento entre a comunidade que desenvolvia o kernel e a
empresa que desenvolvia comercialmente o BitKeeper se desfez, e o
status de isento-de-pagamento da ferramenta foi revogado.
• a comunidade de desenvolvedores do LINUX (em particular Linus
Torvalds, seu criador) a desenvolver sua própria ferramenta baseada
nas lições que eles aprenderam ao usar o BitKeeper
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
LINUS
TORVALDScriador do LINUX e GIT
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
QUAL ERA A INTENÇÃO DE LINUS ?
• Linus queria um sistema para o desenvolvimento do kernel LINUX, porém o
git foi muito além disso e assim então adotado por muitos outros projetos.
• Alguns dos objetivos do novo sistema eram:
• Velocidade
• Design simples
• Suporte robusto a desenvolvimento não linear (milhares de branches paralelos)
• Totalmente distribuído
• Capaz de lidar eficientemente com grandes projetos (velocidade e volume de dados)
O Git evoluiu e é um sistema fácil de usar e que mantém as qualidades iniciais
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
VANTAGENS DE TRABALHAR NUM PROJETO EM GIT
• permite que várias pessoas possam trabalhar simultaneamente em
um mesmo projeto, sem que haja conflitos ou bagunça neste mesmo
projeto
• permite uma velocidade muito maior de trabalho, por não precisar
acessar o diretório com frequência
• se trabalhar com sistema de rede, por exemplo, ele se torna muito
mais rápido que na nuvem
• quando uma estação baixa o projeto, ela estará atualizada, sem
nenhum erro ou bug
POR ISSO PODEMOS CHAMAR CONTROLE DE VERSÃO DISTRIBUÍDO
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Agora chegou a hora de aprender a criar seu
próprio repositório e interagir com ele
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Já ouviu falar do GitHub? Não?
•Resumidamente, o GitHub é um site onde você pode
ARMAZENAR SEUS REPOSITÓRIOS GIT
•é para controle de versão e colaboração. Permite
que você e outras pessoas trabalhem juntas em
projetos de qualquer lugar do mundo
péra...mas Git, Github não é a mesma coisa?
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
NÃO!
apesar de trabalharem juntos, não são a mesma coisa !
REDE SOCIAL!
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Baixando o
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Download windows, mac os e linux
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Cadastro no
Github
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Criando conta
no GitHub
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
CRIAR
REPOSITÓRIO
Clique em New
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
CRIAR
REPOSITÓRIO
Agora basta colocar o
nome e descrição do
repositório que você
está criando e clicar
em
Create repository
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
CRIAR
REPOSITÓRIO
O repositório foi
criado, mas ainda está
vazio.
Em seguida copiamos
o link do repositório
que vamos usar lá na
frente!
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
com as ferramentas
prontas vamos
CRIAR E SUBIR
nosso arquivo html
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Procurar e abrir
o Git bash
é um prompt de comando
do Git
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Vá até a pasta onde
criou o repositório
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
clonando
repositório
Em seguida, vamos clonar
o repositório Recode do
github para nosso
computador, através do
link: comando
git clone <link>
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Link
repositório
https://github.com/alansouz4/GitNaRecodePro.githttps://github.com/alansouz4/GitNaRecodePro.git
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Em seguida entre na pasta Recode que já esta no
seu computador
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Agora configuramos email e nome criados no github
git config --global user.email”<seu email>”
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Para name usar o comando
git config --global user.name”nome usuário
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
agora abra o Visual Studio e
crie um arquivo com nome
projeto.html
dentro da pasta Recode
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Volte no bash
para subir o
html
git add projeto.html
ou seja, ficará em uma área aguardando ser enviado ao
repositório
git commit –m “arquivo html”
dizendo o que você esta fazendo
git push origin master
subindo para o github
Origin: minha máquina.
Master: repositório github.
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
faça o login no repositório
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
deve ficar
assim
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Caso não seja
enviado, siga
esses passos:
digite:
git pull
Em seguida digite novamente o
comando:
git push origin master
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Volte à conta
do GitHub,
atualize a
página e seu
arquivo estará
no repositório
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Outros comandos utilizados no Git
git init Iniciar um repositório repositório
git config –list Verificar as configurações locais
git config --global user.name Encontrar o nome de usuário
git config --global user.email Encontrar o email
git config --global user.name”nome usuário” Alterar as configurações locais (nome de usuário)
git config --global user.email”email do usuário” Alterar o email
git config --global core.editor vim Alterar o editor de textos usados no commit e diffs
git tag Lista as versões do repositório
git checkout Resgatar versão antiga
LISTA DE COMANDOS
https://woliveiras.com.br/posts/comandos-mais-utilizados-no-git/
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
“Baixar” um repositório
git clone link
Exemplo: se eu quisesse baixar o repositório deste blog
git clone git@github.com:woliveiras/woliveiras.github.io.git
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
Para saber mais de git acesse: git-scm.com
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
alguns links
• SourceTree
• GitHub Desktop
• TortoiseGit
• SmartGit
• GitKraken
• GitEye
• gitg
• Fork
• Pocket Git (mobile)
RecodePro–Grupo6:AlanAugusto,GianePessoa,GuilhermeBatista,LucasGomes,PriscilaTavares
FIM

Apresentação Git - Recode Pro Grupo 6