SlideShare uma empresa Scribd logo
1 de 133
Baixar para ler offline
Version all
the things
Recurso 150770
conhecida como
Andréa Zambrana
front-end lead @ via varejo
@akfzambrana
Recurso 150770
conhecida como
Andréa Zambrana
front-end lead @ via varejo
@akfzambrana
@abc_developers
Gosto de GIFs
Controle de versão
O que é?
Voltar / recuperar
Conhecer a história
Comparar
De quem é a culpa!
Tá, mas e quais
arquivos posso
controlar?
Métodos
ctrl + c, ctrl + v
Compressão (gzip, zip, etc)
Sistemas de controle
de versão
VCS (Version Controller System)
Local
Centralizado
Distribuído
Local
Histórico de revisões
Patch database
A
AB
ABCABC
v1
v2
v3
Centralizado
Z ZA ZA
B
ZA
BC
Ana Carol Bia
r1 r2 r3 r4
+A +B +C
Tronco principal
Distribuído
v3
v2
v1
Remoto
v3
v2
v1
Ana
+A
v3
v2
v1
Carol
+B +C
Vantagens
Cada pessoa
possui uma cópia do
repositório completo
É possível
trabalhar em paralelo
É rápido
Merges com conflitos
são relativamente
simples de resolver
Funciona off-line
Workshop não
era sobre Git?
Sistema de controle
de versão distribuído
Linus
Torvalds
Rápido
Design simples
Suporte robusto
para desenvolvimento
não linear
Muitos branchs paralelos
100% distribuído
Consegue lidar
com grandes projetos
Legal, mas porque o
Git é melhor?
Snapshots
Não diffs
Operações locais
Quase todas
Questão
de integridade
SHA-1 hash
Nem é tão importante, né?
Reversível
Formas de utilização
Interface gráfica
https://git-scm.com/downloads/guis
Terminal
Console
Como o Git funciona
As áreas do git
Stashing area
Limbo Workspace Stagging area Repository Remote/Origin
Área de
trabalho
Área de
preparação
Diretório
.git
Servidor
Upside down
parallel universe
Limbo
Área de empilhar/
cantinho da bagunça
Local Nuvem
Os estados
de um arquivo
Untracked Modificado Preparado Consolidado
Empilhado
Stashing area
Limbo Workspace Stagging area Repository [.git] Remote/Origin
Consolidado
Vamos falar
de configurações
gitconfig
Sistema
--system
Usuário
--global
Projeto
<sem parámetro>
$ git config --system core.editor vim
$ git config --global user.name "Ana Silva"
$ git config --global user.email usr@url.com
$ git config user.email usr2@url.com
Como visualizar as configurações
$ git config --list
Ajuda sobre qualquer comando
$ git comando --help
Comando para todos os arquivos
$ git comando .
Hands on
Como criar um repositório
$ mkdir nome-diretorio
$ cd nome-diretorio
$ git init
Como usar um repositório remoto
$ git clone url-repositorio
$ git clone url-repositorio
» outro-nome-projeto
sshhttp
Chave pública
+
chave privada
Usuário
+
senha
Ver status do repositório
$ git status
Preparando um arquivo
$ git add nome-do-arquivo
$ git rm nome-do-arquivo
$ git add .
Consolidando uma versão
$ git commit
$ git commit -m “Mensagem”
behind
pra trás
ahead
pra frente
Corrigindo o último commit
$ git commit --amend
$ git commit --amend »
--author="Name <email@url.com>"
Adicionando e consolidando
$ git commit -am “Mensagem”
Mensagens que façam
sentido e ajudem a
saber o que foi feito
Nada de:
“correção”
“bugfix”
“alteração”
“oops”
Empilhando bagunçinhas
$ git stash
$ git stash nome-arquivo.txt
$ git stash save “mensagem”
Trabalhando com as bagunças
$ git stash apply
$ git stash pop
$ git stash list
$ git stash clear
Visualizando o histórico
$ git log
$ git log --oneline
$ git log --graph --oneline
Visualizando as alterações
$ git diff
$ git diff nome-arquivo.txt
Visualizando as alterações
$ git show hash-commit
Desfazendo alterações
$ git checkout .
$ git checkout arquivo.txt
$ git clean -fd
$ git checkout hash-commit
Voltando a um commit específico
Desfazendo arquivos preparados
$ git reset .
$ git reset arquivo.txt
Desfazendo commits
$ git reset HEAD~n
$ git reset HEAD~3
$ git reset HEAD~3 --hard
Conhecendo o servidor
$ git remote -v
Adicionando um servidor
$ git remote add origin
» url-repositorio
Trocando o servidor
$ git remote set-url origin
» url-repositorio
Enviando alterações ao servidor
$ git push
$ git push -u
$ git push origin
Sincronizando com o servidor
$ git fetch
$ git fetch -p
Trazendo alterações do servidor
$ git pull
$ git pull --rebase
$ git rebase
Branchs
Literalmente galhos
Cópias completas
do repositório
FeatureZ
Bugfix A
Criando uma branch
$ git branch nome-branch
$ git checkout -b nome-branch
Atenção!
A branch será uma
cópia da original
Trocando de branch
$ git checkout nome-branch
Tags
Branchs imutáveis
Listando as tags
$ git tag
$ git tag -l
Trabalhando com uma tag
$ git checkout nome-tag
Mesclando branchs
Let’s merge
Misturando branchs
$ git merge nome-branch
$ git pull nome-branch
Merge fast-forward
$ git merge nome-branch
Merge no fast-forward
$ git merge --no-ff nome-branch
E se der conflito?
Meld
http://meldmerge.org/
Workflows com Git
Centralizado
Feature branch
Gitflow
Fork
Centralizado
Mais simples
FeatureA
BugfixB
Master
Rebase
Feature branch
Master
Ana
Bia
FeatureA
Bugfix B
Gitflow
Feat A
v0.3
Bug Z
Master
v0.1
Desenv
v0.2 v0.3
Workflow Via Varejo
Gitflow + feature branch
Feat A
v0.3
Bug Z
Master
v0.1 v0.2 v0.3
Desenv
Bug Z
hotfix
v1.0.1
Feat A
Master
v1.0.0
release
v1.1.0
v1.1.0v1.0.1
Por quê?
Liberdade pro negócio
nois
fica
como?
Para estudar em casa
$ git bisect
$ git reflog
Livro “Pro Git”
Scott Chacon e Ben Straub
Original em inglês: https://git-scm.com/book/en/v2
Tradução de Eric Douglas: https://leanpub.com/pro-git
Leitura!
Ajude o time
Vlw!!!
@akfzambranaVia Varejo
2018

Mais conteúdo relacionado

Mais procurados

Automatizando tarefas com bash script
Automatizando tarefas com bash scriptAutomatizando tarefas com bash script
Automatizando tarefas com bash scriptRennan Cockles
 
Git lighting talk
Git lighting talkGit lighting talk
Git lighting talkCaio Gondim
 
Trabalho so m4 rui faria
Trabalho so m4   rui fariaTrabalho so m4   rui faria
Trabalho so m4 rui fariaRuiFaria38
 
Git na prática - Minicurso III SEICOM
Git na prática - Minicurso III SEICOMGit na prática - Minicurso III SEICOM
Git na prática - Minicurso III SEICOMKenner Kliemann
 
Oficina shell
Oficina shellOficina shell
Oficina shellapsegundo
 
Alterar password linux user pam autentication
Alterar password linux user   pam autenticationAlterar password linux user   pam autentication
Alterar password linux user pam autenticationCarlos Eduardo
 
Quarto Trabalho Pm 2009 2
Quarto Trabalho Pm 2009 2Quarto Trabalho Pm 2009 2
Quarto Trabalho Pm 2009 2guestf9707e1
 
Comparação entre frameworks PHP
Comparação entre frameworks PHPComparação entre frameworks PHP
Comparação entre frameworks PHPRenato Shirakashi
 
Comandos básicos linux
Comandos básicos linuxComandos básicos linux
Comandos básicos linuxLuciano Souto
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Victor Souza
 
Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonAlysson Ajackson
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Leo Amorim
 

Mais procurados (20)

Linux shell
Linux shellLinux shell
Linux shell
 
Git
GitGit
Git
 
Automatizando tarefas com bash script
Automatizando tarefas com bash scriptAutomatizando tarefas com bash script
Automatizando tarefas com bash script
 
Git lighting talk
Git lighting talkGit lighting talk
Git lighting talk
 
Trabalho so m4 rui faria
Trabalho so m4   rui fariaTrabalho so m4   rui faria
Trabalho so m4 rui faria
 
Git na prática - Minicurso III SEICOM
Git na prática - Minicurso III SEICOMGit na prática - Minicurso III SEICOM
Git na prática - Minicurso III SEICOM
 
Oficina shell
Oficina shellOficina shell
Oficina shell
 
Alterar password linux user pam autentication
Alterar password linux user   pam autenticationAlterar password linux user   pam autentication
Alterar password linux user pam autentication
 
Quarto Trabalho Pm 2009 2
Quarto Trabalho Pm 2009 2Quarto Trabalho Pm 2009 2
Quarto Trabalho Pm 2009 2
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Comparação entre frameworks PHP
Comparação entre frameworks PHPComparação entre frameworks PHP
Comparação entre frameworks PHP
 
Comandos básicos linux
Comandos básicos linuxComandos básicos linux
Comandos básicos linux
 
Cap1 exercicios comandos linux
Cap1 exercicios comandos linuxCap1 exercicios comandos linux
Cap1 exercicios comandos linux
 
Comandos basicos linux
Comandos basicos linuxComandos basicos linux
Comandos basicos linux
 
Puppet 3 em 2017
Puppet 3 em 2017Puppet 3 em 2017
Puppet 3 em 2017
 
Shell Script Linux
Shell Script LinuxShell Script Linux
Shell Script Linux
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016
 
Comandos Shell
Comandos ShellComandos Shell
Comandos Shell
 
Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson Ajackson
 
Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2Aula - Comandos Linux - Parte 2
Aula - Comandos Linux - Parte 2
 

Semelhante a Controlar versões com Git

Git para não manjadores
Git para não manjadoresGit para não manjadores
Git para não manjadoresWil Fernandes
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazViajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazFlávio Lisboa
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com gitHumberto Streb
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errarBruno Calheira
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.Rafael Ivan
 
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWDesvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWMorganna Giovanelli de Souza
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
Curso front-end - Aula 002 - Git
Curso front-end - Aula 002 - GitCurso front-end - Aula 002 - Git
Curso front-end - Aula 002 - GitAndréa Zambrana
 

Semelhante a Controlar versões com Git (20)

Git - Visão Geral
Git - Visão GeralGit - Visão Geral
Git - Visão Geral
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Git para não manjadores
Git para não manjadoresGit para não manjadores
Git para não manjadores
 
Controle de versão com Git
Controle de versão com GitControle de versão com Git
Controle de versão com Git
 
Git do Zero - Campus Party #12
Git do Zero - Campus Party #12Git do Zero - Campus Party #12
Git do Zero - Campus Party #12
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Git + git hub
Git + git hubGit + git hub
Git + git hub
 
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazViajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com git
 
Git+github
Git+githubGit+github
Git+github
 
Git flow no projeto
Git flow no projetoGit flow no projeto
Git flow no projeto
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Controle de versão e colaboração com Git
Controle de versão e colaboração com GitControle de versão e colaboração com Git
Controle de versão e colaboração com Git
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.
 
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTWDesvendando Git e Github - WoMakersCode Bootcamp @ SPTW
Desvendando Git e Github - WoMakersCode Bootcamp @ SPTW
 
Git
GitGit
Git
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Curso front-end - Aula 002 - Git
Curso front-end - Aula 002 - GitCurso front-end - Aula 002 - Git
Curso front-end - Aula 002 - Git
 

Mais de Andréa Zambrana

Sass maps, my precious! 2.0
Sass maps, my precious! 2.0Sass maps, my precious! 2.0
Sass maps, my precious! 2.0Andréa Zambrana
 
Curso front-end - Aula 004 - Comandos git (cont.)
Curso front-end - Aula 004 - Comandos git (cont.)Curso front-end - Aula 004 - Comandos git (cont.)
Curso front-end - Aula 004 - Comandos git (cont.)Andréa Zambrana
 
Curso front-end - Aula 003 - Comandos git
Curso front-end - Aula 003 - Comandos git Curso front-end - Aula 003 - Comandos git
Curso front-end - Aula 003 - Comandos git Andréa Zambrana
 
Curso front-end - Aula 001
Curso front-end - Aula 001Curso front-end - Aula 001
Curso front-end - Aula 001Andréa Zambrana
 
b ou strong eis a questão! HTML semântico, o santo graal do front-end =]
 b ou strong eis a questão! HTML semântico, o santo graal do front-end =] b ou strong eis a questão! HTML semântico, o santo graal do front-end =]
b ou strong eis a questão! HTML semântico, o santo graal do front-end =]Andréa Zambrana
 
Acessibilidade web, perda de tempo?
Acessibilidade web, perda de tempo?Acessibilidade web, perda de tempo?
Acessibilidade web, perda de tempo?Andréa Zambrana
 

Mais de Andréa Zambrana (11)

Caipirinha CSS
Caipirinha CSSCaipirinha CSS
Caipirinha CSS
 
Caipirinha CSS
Caipirinha CSSCaipirinha CSS
Caipirinha CSS
 
Viajando no front
Viajando no frontViajando no front
Viajando no front
 
Sass maps, my precious! 2.0
Sass maps, my precious! 2.0Sass maps, my precious! 2.0
Sass maps, my precious! 2.0
 
Curso front-end - Aula 004 - Comandos git (cont.)
Curso front-end - Aula 004 - Comandos git (cont.)Curso front-end - Aula 004 - Comandos git (cont.)
Curso front-end - Aula 004 - Comandos git (cont.)
 
Curso front-end - Aula 003 - Comandos git
Curso front-end - Aula 003 - Comandos git Curso front-end - Aula 003 - Comandos git
Curso front-end - Aula 003 - Comandos git
 
Curso front-end - Aula 001
Curso front-end - Aula 001Curso front-end - Aula 001
Curso front-end - Aula 001
 
Sass maps, my precious!
Sass maps, my precious!Sass maps, my precious!
Sass maps, my precious!
 
Sass - css bomba[do]
Sass - css bomba[do]Sass - css bomba[do]
Sass - css bomba[do]
 
b ou strong eis a questão! HTML semântico, o santo graal do front-end =]
 b ou strong eis a questão! HTML semântico, o santo graal do front-end =] b ou strong eis a questão! HTML semântico, o santo graal do front-end =]
b ou strong eis a questão! HTML semântico, o santo graal do front-end =]
 
Acessibilidade web, perda de tempo?
Acessibilidade web, perda de tempo?Acessibilidade web, perda de tempo?
Acessibilidade web, perda de tempo?
 

Controlar versões com Git