SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a Git tutorial: versionamento de código com o sistema de controle de versão Git

Introdução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPIntrodução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPSamuel Sampaio
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesLeandro Cavalcante
 
Git- O minimo que você deve saber para trabalhar com ele.pptx
Git- O minimo que você deve saber para trabalhar com ele.pptxGit- O minimo que você deve saber para trabalhar com ele.pptx
Git- O minimo que você deve saber para trabalhar com ele.pptxLuiz Fernando
 
Controle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareControle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareGilmar Pupo
 
Git e Sistemas de Controle de Versão
Git e Sistemas de Controle de VersãoGit e Sistemas de Controle de Versão
Git e Sistemas de Controle de VersãoJhonatan Henrique
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoFabricio Nogueira
 
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14Getup Cloud
 
workshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfworkshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfAuriceliaRosa
 

Semelhante a Git tutorial: versionamento de código com o sistema de controle de versão Git (20)

Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
Introdução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySPIntrodução ao Git - fs2w - GrupySP
Introdução ao Git - fs2w - GrupySP
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de Versões
 
Bt4 H2HC6th
Bt4 H2HC6thBt4 H2HC6th
Bt4 H2HC6th
 
Git- O minimo que você deve saber para trabalhar com ele.pptx
Git- O minimo que você deve saber para trabalhar com ele.pptxGit- O minimo que você deve saber para trabalhar com ele.pptx
Git- O minimo que você deve saber para trabalhar com ele.pptx
 
Controle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareControle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de software
 
Git basico
Git basicoGit basico
Git basico
 
Iptables layer7
Iptables layer7Iptables layer7
Iptables layer7
 
Git + Github
Git + GithubGit + Github
Git + Github
 
Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
 
Git e Sistemas de Controle de Versão
Git e Sistemas de Controle de VersãoGit e Sistemas de Controle de Versão
Git e Sistemas de Controle de Versão
 
Git
GitGit
Git
 
Git ao GitHub
Git ao GitHubGit ao GitHub
Git ao GitHub
 
Git & GitHub for beginners
Git & GitHub for beginnersGit & GitHub for beginners
Git & GitHub for beginners
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básico
 
Go git - Presentation @Navita
Go git - Presentation @NavitaGo git - Presentation @Navita
Go git - Presentation @Navita
 
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
PT-BR - Lauching a Public PaaS on Open Source Getup & OpenShift Origin - FISL14
 
workshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfworkshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdf
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 

Git tutorial: versionamento de código com o sistema de controle de versão Git