SlideShare uma empresa Scribd logo
1 de 61
Baixar para ler offline
GIT
POR QUE SABER SOBRE?
+
=
28 mi
biggest code repo
WEB DEVELOPMENT
AGILE COACH
PRODUCT OWNER
FE/BE/FS
(DEVS)
UI DEV
QA
DEVOPS
UX
SOBRE O MINICURSO
BÁSICO
● SISTEMA DE CONTROLE DE VERSÃO (VCS)
● O QUE É O GIT?
● CONCEITOS BÁSICOS
● FORMAS DE TRABALHO
● PASTA .GIT
● .GITIGNORE
● ESTÁGIOS
● COMANDOS: STATUS, ADD, COMMIT, LOG,
DIFF, RESET, BLAME
● REPOSITÓRIOS REMOTOS
● COMANDOS: REMOTE, PUSH, PULL
● CLONANDO UM REPOSITÓRIO
● COMANDOS: CLONE
INTERMEDIÁRIO
● BRANCHING (CONCEITO)
● COMANDO: BRANCH
● CHECKOUT (CONCEITO)
● COMANDO: FETCH, CHECKOUT, STASH
● MERGE (CONCEITO)
● COMANDO: MERGE
● CONFLITOS
● BRANCHES REMOTAS
● REBASING (CONCEITO)
● COMANDOS: REBASE
● TAGGING (CONCEITO)
● COMANDOS: TAG
● PULL REQUEST
AVANÇADO
● VERSIONAMENTO SEMÂNTICO
● WORKFLOWS
COMANDOS
ETAPA
EXERCÍCIOS
10
YURI REIS
DEV FULL STACK
KOERICH ENGENHARIA
GESTÃO EM TI
FILHAS MARAVILHOSAS
TDC, AGILE TESTERS CONFERENCE
RPG, RTS, FIGHTING
FRONTEND, PYTHON, TESTES
YURI REIS
DEV FULL STACK
KOERICH ENGENHARIA
ANGULAR, ANGULARJS, GULP,
SASS, BOOTSTRAP 4
FLASK, EXPRESS, .NET CORE
PYTHON, C#, TYPESCRIPT,
HTML, CSS, JAVASCRIPT
MYSQL, MONGO (NOSQL)
DOCKER
SISTEMAS DE CONTROLE DE VERSÃO (VCS)
{ CVS, SVN }
GIT
SISTEMA DE CONTROLE DE
VERSÃO DISTRIBUÍDO
DISTRIBUÍDO, RÁPIDO E NATURALCARACTERÍSTICAS:
CONCEITOS BÁSICOS
TIME
CAPSULE
BRANCH
COMMIT
WORKING
TREE
REPO
CLI
INTERFACE DE LINHA DE COMANDO
CLI
INTERFACE GRÁFICA DE USUÁRIO
FORMAS DE TRABALHO
10
1) Criar pasta para o projeto
2) Abrir a pasta do projeto com o VSCODE
3) Inicializar o repositório (comando: git init)
4) Configuração de usuário local:
a) git config --global user.name "seu username"
b) git config --global user.email “seu@email.com”
(criar conta, realizar o set up de usuário e inicializar o repositório local)
3
.git
.gitignore
ESTÁGIOS
COMMIT: DESCREVER O COMANDO AQUI
STATUS: apresenta o nome da branch que você está, além de listar os arquivos
que foram modificados na “WORKING TREE” (separados por estágios)
git status
ADD: apresenta o nome da branch que você está, além de listar os arquivos que
foram modificados na “WORKING TREE”
git add -A
COMMIT: Cada vez que você salva ou consolida o estado do seu projeto
git commit -m “mensagem clara e curta”
-- AMEND: adiciona os arquivos alterados (ou novos) que estão na staging
area ao último commit
git commit --amend
LOG: apresenta todos os commits (e responsável por eles), começando do mais novo
git log
DIFF: apresenta o antes e o depois dos arquivos que foram modificados na
“WORKING TREE”
git diff
RESET HEAD: faz a reversão do estágio do(s) arquivo(s) para a “STAGING
AREA”
git reset HEAD
--HARD: acrescentando esse parâmetro, faz a reversão do estágio do(s)
arquivo(s) para a “WORKING AREA”
git reset --hard HEAD
BLAME: quem realizou as alterações em um determinado arquivo e quando
git blame <<arquivo>>
1) Criar um arquivo do tipo .txt
2) Executar o comando git status (arquivo do tipo .txt deverá aparecer
na “WORKING AREA”)
3) Criar o arquivo .gitignore
4) Editar o arquivo .gitignore e colocar o seguinte texto: *.txt
5) Executar o comando git status (o arquivo txt não deverá aparecer na
“WORKING AREA”)
6) Adicionar o arquivo .gitignore para a STAGING AREA (git add -A)
7) Realizar o commit com a seguinte frase: “Ignorando arquivos txt da
pasta raiz”
(realizar o primeiro commit)
10
REPOSITÓRIOS
REMOTOS
ALIAS: ORIGIN
PROTOCOLOS: HTTPS / SSH
REMOTE: adiciona a referência a um repositório remoto através de um alias
git remote add origin <<url_do_repositório>>
PUSH: empurra as alterações para a nuvem
git push origin master
PULL: “puxa” as atualizações existentes em relação a branch que você referenciar
git pull origin master
1) Realizar cadastro no GITHUB
2) Criar um repositório
3) Copiar o link com o protocolo https
4) Adicionar o host remoto (git remote add origin <<link>>)
5) Realizar o push da branch master para a nuvem
6) Atualizar o repositório remoto e verificar se o código está lá.
(disponibilizar o código na nuvem)
10
CLONANDO UM REPOSITÓRIO
LOCAL NUVEM
CLONE: realiza a cópia de um repositório remoto para a máquina local
git clone <<url_do_repositório>>
1) Excluir o repositório local
2) Realizar o clone do projeto
(realizar o processo de clone)
2
BRANCHING
FEATURE/1
FIRST COMMIT
COMMIT 1 COMMIT 2
MASTER
FEATURE BRANCH: NOVAS FUNCIONALIDADES/CORREÇÕES/REFACTORY
BRANCH: lista as branches existentes (localmente)
git branch
<<nome_da_branch>>: cria uma branch nova (localmente) com
base na branch que você está “checado”
git branch <<nome_da_branch>>
-D: remove a branch (é necessário dar checkout da mesma, ou seja, não
estar nela) localmente
git branch -D <<nome_da_branch>>
CHECKOUT>>
USUÁRIO
REPOSITÓRIO
REMOTO
REPOSITÓRIO
LOCAL
1. Usuário faz
checkout
1.1 Possui branch e
permite o checkout
1.2.1 possui branch e
permite checkout
1.2 não possui branch
localmente
1.2.2 não possui branch
e não permite checkout
FETCH: sincroniza as informações locais com o que está no remoto
git fetch
CHECKOUT: sai de uma branch e vai para outra
git checkout <<nome_da_branch>>
STASH: guarda todo o conteúdo da “WORKING AREA” e da “STAGING AREA” em
uma pilha (stash)
git stash
MERGE
MASTER BRANCH “A”
MASTER = (MASTER U BRANCH “A”)
BRANCH PARA O “MERGE”
BRANCH A SER “MERGEADA”
MERGE: processo de...
git merge <<nome_da_branch>>
1) Dar checkout da master para a branch feature/1
2) Criar um arquivo novo com algum conteúdo dentro
3) Realizar o commit deste arquivo
4) Dar checkout novamente para a master
5) Realizar o merge da branch feature/1 na master (localmente)
6) Verificar com o comando log se o commit da feature/1 está na master
(ver pela mensagem)
7) Dar o push da master para a nuvem
(realizar o merge localmente)
10
CONFLITOS!
O QUE É?
- Duas pessoas alteram
o mesmo arquivo, na
mesma linha.
COMO LIDAR?
- Melhorar a qualidade
dos conflitos.
- Diminuir a frequência
em que ocorrem.
- Não realizar commits
diretamente em
branches “longevas”.
- Manter o histórico
linear. (sem commits
de merge)
- Realizar Rebase
BRANCHES REMOTAS
● São referências ao estado de seus branches
no seu repositório remoto.
● São branches locais que você não pode
mover, eles se movem automaticamente
sempre que você faz alguma comunicação via
rede.
O QUE SÃO? UTILIDADE
● Branches remotos agem como
marcadores para lembrá-lo onde
estavam seus branches no seu
repositório remoto na última vez que
você se conectou a eles.
● Também servem para comparação com
as branches de base para merge
● Permite visualização para code review
PUSH: empurra as alterações para a nuvem
git push origin <<nome_da_branch>>
1) Dar checkout para a master (caso não esteja)
2) Criar uma branch nova a partir da master (feature/2)
3) Dar o push da branch nova para a nuvem
(disponibilizar uma branch nova na nuvem)
5
FEATURE/2
REBASING
FEATURE/1
FIRST COMMIT
COMMIT 1 COMMIT 2
MASTER
COMMIT 3
merge
rebasing
REBASE: realinha a história de uma branch em relação a sua branch base
(possívelmente o alvo para merge)
git rebase master
1) Dar checkout para a master localmente
2) Criar uma branch nova a partir da mesma (feature/3)
3) Adicionar um arquivo novo com algum conteúdo
4) Realizar o commit deste arquivo
5) Dar checkout para a master
6) Realizar o merge da nova branch (feature/3) na master
7) Dar checkout para a feature/2
8) Realizar o rebase com a master
9) Dar push da feature/2 para a nuvem
(realizar o rebase)
10
TAGGING
- commit (hash)
- branch (HEAD)
- tag
3x CHECKOUT
TAG: marcar uma hash de uma maneira legível para humanos
TAG: realiza a listagem de tags (locais)
git tag
<<nome da tag>>: realiza a marcação da hash de commit com um nome
git tag <<nome_da_tag>>
PUSH <<nome_da_tag>>: disponibiliza a tag na nuvem
git push origin <<nome_da_tag>>
PULL REQUEST
● Envolve a branch base e a branch de
comparação
● Processo fornecido pelos serviços de
repositório
● Permite a comparação entre as branches
O QUE É?
1) Dar push da master para a nuvem
2) Fazer checkout da master para uma nova branch (feature/4)
3) Modificar o conteúdo dos arquivos existentes na branch
4) Adicionar alguns arquivos e conteúdo dentro dos mesmos
5) Realizar o commit
6) Dar push da branch nova para a nuvem
7) Ir até o serviço de repositório remoto e criar o pull request
8) Validar as alterações e fazer o merge na modalidade fast-foward
9) Verificar os commits da master da nuvem e se certificar de que os
commits estão na mesma
(realizar merge através de pull request)
15
VERSIONAMENTO SEMÂNTICO
MAJOR: versão que marca uma quebra de compatibilidade com a anterior
MINOR: versão que adiciona uma funcionalidade que tem compatibilidade com a versão major
PATCH: versão que marca uma correção compatível com a versão minor
MAJOR.MINOR.PATCH
(v0.0.0)
FLUXOS DE TRABALHO
CENTRALIZED WORKFLOW
- Centrado na master
FEATURE BRANCH WORKFLOW
- Master é sagrada!
- Funcionalidades são
desenvolvidas em
branches separadas,
sem incomodar o código
principal
- Permite discussões
acerca da branch
GIT FLOW
- Foi apresentado por
Vincent Driessen
- Desenhado para as
releases de projeto
- Para gerenciar projetos
grandes
- Trabalha com duas
branches de longa vida:
master e develop
- Branches de vida curta:
feature, release e hotfix
FLUXOS DE TRABALHO
GIT FLOW (COMEÇO)
MASTER
DEVELOP
HEAD
HEAD
(v0.0.0)
FEATURE/1
FLUXOS DE TRABALHO
GIT FLOW (FEATURE~DEVELOP)
DEVELOP
COMMIT 1 COMMIT 2
(v0.1.0)
FLUXOS DE TRABALHO
GIT FLOW (HOTFIX)
MASTER
DEVELOP
(v0.0.1)
COMMIT 3
HOTFIX/1
(v0.1.0)
COMMIT 3
FLUXOS DE TRABALHO
GIT FLOW (RELEASE)
MASTER
DEVELOP
(v0.0.1)
COMMIT 4
RELEASE/1(0.1.0)
(v0.1.0 ~ HEAD)
(v0.1.0 ~ HEAD)
FLUXOS DE TRABALHO
Perguntas:
“ Quando você está avaliando implementar
um
fluxo de trabalho para sua equipe, é mais
importante considerar a cultura da mesma.
Afinal, você quer implementar um
fluxo para
aumentar a efetividade da equipe e não para
ser um
fardo que limita a produtividade. “
- Este fluxo escala para o
tamanho da equipe?
- É simples desfazer os erros
com este fluxo?
- Este fluxo impõe qualquer
carga desnecessário para a
equipe?
OBRIGADO!
https://linkedin.com/in/yurireis
https://github.com/yurireeis

Mais conteúdo relacionado

Mais procurados

Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º diaArmando Couto
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAArmando Couto
 
Git - GitHub
Git - GitHubGit - GitHub
Git - GitHubWagner
 
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
 
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
 
SVN - Subversion
SVN - SubversionSVN - Subversion
SVN - SubversionRafael Une
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao GitOto Junior
 
Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Jonathan Célio
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Hélio Medeiros
 

Mais procurados (20)

Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIA
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Git v2
Git v2Git v2
Git v2
 
Oficina de Git EEDACT2015
Oficina de Git EEDACT2015Oficina de Git EEDACT2015
Oficina de Git EEDACT2015
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Git - GitHub
Git - GitHubGit - GitHub
Git - GitHub
 
Git flow no projeto
Git flow no projetoGit flow no projeto
Git flow no projeto
 
Controle de versão com e git
Controle de versão com e gitControle de versão com e git
Controle de versão com e git
 
Git 101
Git 101Git 101
Git 101
 
Git conceitos
Git conceitosGit conceitos
Git conceitos
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
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
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
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
 
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
 
SVN - Subversion
SVN - SubversionSVN - Subversion
SVN - Subversion
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos
 
Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.Git that like a boss - Dos comandos básicos aos branches.
Git that like a boss - Dos comandos básicos aos branches.
 

Semelhante a Git workshop

Semelhante a Git workshop (20)

Gerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHubGerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHub
 
Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Git
GitGit
Git
 
GIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoGIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento Semântico
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Git
GitGit
Git
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
GIT - Hands-On
GIT - Hands-On GIT - Hands-On
GIT - Hands-On
 
Introdução ao Git
Introdução ao Git   Introdução ao Git
Introdução ao Git
 
Git
GitGit
Git
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficiente
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Git
GitGit
Git
 
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
 
Sendo um GIT master
Sendo um GIT masterSendo um GIT master
Sendo um GIT master
 
workshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfworkshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdf
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 

Último

From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfRodolpho Concurde
 
Certificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfCertificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfLarissa Souza
 
Apresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfApresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfCarlos Gomes
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)Alessandro Almeida
 
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdfConcurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdfGuilhermeRodrigues896381
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 

Último (6)

From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
Certificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfCertificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdf
 
Apresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfApresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdf
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdfConcurso Caixa TI - Imersão Final - Rogério Araújo.pdf
Concurso Caixa TI - Imersão Final - Rogério Araújo.pdf
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 

Git workshop

  • 1. GIT
  • 2. POR QUE SABER SOBRE?
  • 3.
  • 4. + =
  • 5.
  • 7.
  • 8. WEB DEVELOPMENT AGILE COACH PRODUCT OWNER FE/BE/FS (DEVS) UI DEV QA DEVOPS UX
  • 10. BÁSICO ● SISTEMA DE CONTROLE DE VERSÃO (VCS) ● O QUE É O GIT? ● CONCEITOS BÁSICOS ● FORMAS DE TRABALHO ● PASTA .GIT ● .GITIGNORE ● ESTÁGIOS ● COMANDOS: STATUS, ADD, COMMIT, LOG, DIFF, RESET, BLAME ● REPOSITÓRIOS REMOTOS ● COMANDOS: REMOTE, PUSH, PULL ● CLONANDO UM REPOSITÓRIO ● COMANDOS: CLONE INTERMEDIÁRIO ● BRANCHING (CONCEITO) ● COMANDO: BRANCH ● CHECKOUT (CONCEITO) ● COMANDO: FETCH, CHECKOUT, STASH ● MERGE (CONCEITO) ● COMANDO: MERGE ● CONFLITOS ● BRANCHES REMOTAS ● REBASING (CONCEITO) ● COMANDOS: REBASE ● TAGGING (CONCEITO) ● COMANDOS: TAG ● PULL REQUEST AVANÇADO ● VERSIONAMENTO SEMÂNTICO ● WORKFLOWS
  • 12. YURI REIS DEV FULL STACK KOERICH ENGENHARIA GESTÃO EM TI FILHAS MARAVILHOSAS TDC, AGILE TESTERS CONFERENCE RPG, RTS, FIGHTING FRONTEND, PYTHON, TESTES
  • 13. YURI REIS DEV FULL STACK KOERICH ENGENHARIA ANGULAR, ANGULARJS, GULP, SASS, BOOTSTRAP 4 FLASK, EXPRESS, .NET CORE PYTHON, C#, TYPESCRIPT, HTML, CSS, JAVASCRIPT MYSQL, MONGO (NOSQL) DOCKER
  • 14. SISTEMAS DE CONTROLE DE VERSÃO (VCS) { CVS, SVN }
  • 15. GIT SISTEMA DE CONTROLE DE VERSÃO DISTRIBUÍDO DISTRIBUÍDO, RÁPIDO E NATURALCARACTERÍSTICAS:
  • 17. CLI INTERFACE DE LINHA DE COMANDO CLI INTERFACE GRÁFICA DE USUÁRIO FORMAS DE TRABALHO
  • 18. 10
  • 19. 1) Criar pasta para o projeto 2) Abrir a pasta do projeto com o VSCODE 3) Inicializar o repositório (comando: git init) 4) Configuração de usuário local: a) git config --global user.name "seu username" b) git config --global user.email “seu@email.com” (criar conta, realizar o set up de usuário e inicializar o repositório local) 3
  • 20. .git
  • 23. COMMIT: DESCREVER O COMANDO AQUI STATUS: apresenta o nome da branch que você está, além de listar os arquivos que foram modificados na “WORKING TREE” (separados por estágios) git status ADD: apresenta o nome da branch que você está, além de listar os arquivos que foram modificados na “WORKING TREE” git add -A
  • 24. COMMIT: Cada vez que você salva ou consolida o estado do seu projeto git commit -m “mensagem clara e curta” -- AMEND: adiciona os arquivos alterados (ou novos) que estão na staging area ao último commit git commit --amend
  • 25. LOG: apresenta todos os commits (e responsável por eles), começando do mais novo git log DIFF: apresenta o antes e o depois dos arquivos que foram modificados na “WORKING TREE” git diff
  • 26. RESET HEAD: faz a reversão do estágio do(s) arquivo(s) para a “STAGING AREA” git reset HEAD --HARD: acrescentando esse parâmetro, faz a reversão do estágio do(s) arquivo(s) para a “WORKING AREA” git reset --hard HEAD BLAME: quem realizou as alterações em um determinado arquivo e quando git blame <<arquivo>>
  • 27. 1) Criar um arquivo do tipo .txt 2) Executar o comando git status (arquivo do tipo .txt deverá aparecer na “WORKING AREA”) 3) Criar o arquivo .gitignore 4) Editar o arquivo .gitignore e colocar o seguinte texto: *.txt 5) Executar o comando git status (o arquivo txt não deverá aparecer na “WORKING AREA”) 6) Adicionar o arquivo .gitignore para a STAGING AREA (git add -A) 7) Realizar o commit com a seguinte frase: “Ignorando arquivos txt da pasta raiz” (realizar o primeiro commit) 10
  • 29. REMOTE: adiciona a referência a um repositório remoto através de um alias git remote add origin <<url_do_repositório>> PUSH: empurra as alterações para a nuvem git push origin master PULL: “puxa” as atualizações existentes em relação a branch que você referenciar git pull origin master
  • 30.
  • 31. 1) Realizar cadastro no GITHUB 2) Criar um repositório 3) Copiar o link com o protocolo https 4) Adicionar o host remoto (git remote add origin <<link>>) 5) Realizar o push da branch master para a nuvem 6) Atualizar o repositório remoto e verificar se o código está lá. (disponibilizar o código na nuvem) 10
  • 33. CLONE: realiza a cópia de um repositório remoto para a máquina local git clone <<url_do_repositório>>
  • 34. 1) Excluir o repositório local 2) Realizar o clone do projeto (realizar o processo de clone) 2
  • 35. BRANCHING FEATURE/1 FIRST COMMIT COMMIT 1 COMMIT 2 MASTER FEATURE BRANCH: NOVAS FUNCIONALIDADES/CORREÇÕES/REFACTORY
  • 36. BRANCH: lista as branches existentes (localmente) git branch <<nome_da_branch>>: cria uma branch nova (localmente) com base na branch que você está “checado” git branch <<nome_da_branch>> -D: remove a branch (é necessário dar checkout da mesma, ou seja, não estar nela) localmente git branch -D <<nome_da_branch>>
  • 37. CHECKOUT>> USUÁRIO REPOSITÓRIO REMOTO REPOSITÓRIO LOCAL 1. Usuário faz checkout 1.1 Possui branch e permite o checkout 1.2.1 possui branch e permite checkout 1.2 não possui branch localmente 1.2.2 não possui branch e não permite checkout
  • 38. FETCH: sincroniza as informações locais com o que está no remoto git fetch CHECKOUT: sai de uma branch e vai para outra git checkout <<nome_da_branch>> STASH: guarda todo o conteúdo da “WORKING AREA” e da “STAGING AREA” em uma pilha (stash) git stash
  • 39. MERGE MASTER BRANCH “A” MASTER = (MASTER U BRANCH “A”) BRANCH PARA O “MERGE” BRANCH A SER “MERGEADA”
  • 40. MERGE: processo de... git merge <<nome_da_branch>>
  • 41. 1) Dar checkout da master para a branch feature/1 2) Criar um arquivo novo com algum conteúdo dentro 3) Realizar o commit deste arquivo 4) Dar checkout novamente para a master 5) Realizar o merge da branch feature/1 na master (localmente) 6) Verificar com o comando log se o commit da feature/1 está na master (ver pela mensagem) 7) Dar o push da master para a nuvem (realizar o merge localmente) 10
  • 42.
  • 43. CONFLITOS! O QUE É? - Duas pessoas alteram o mesmo arquivo, na mesma linha. COMO LIDAR? - Melhorar a qualidade dos conflitos. - Diminuir a frequência em que ocorrem. - Não realizar commits diretamente em branches “longevas”. - Manter o histórico linear. (sem commits de merge) - Realizar Rebase
  • 44. BRANCHES REMOTAS ● São referências ao estado de seus branches no seu repositório remoto. ● São branches locais que você não pode mover, eles se movem automaticamente sempre que você faz alguma comunicação via rede. O QUE SÃO? UTILIDADE ● Branches remotos agem como marcadores para lembrá-lo onde estavam seus branches no seu repositório remoto na última vez que você se conectou a eles. ● Também servem para comparação com as branches de base para merge ● Permite visualização para code review
  • 45. PUSH: empurra as alterações para a nuvem git push origin <<nome_da_branch>>
  • 46. 1) Dar checkout para a master (caso não esteja) 2) Criar uma branch nova a partir da master (feature/2) 3) Dar o push da branch nova para a nuvem (disponibilizar uma branch nova na nuvem) 5
  • 47. FEATURE/2 REBASING FEATURE/1 FIRST COMMIT COMMIT 1 COMMIT 2 MASTER COMMIT 3 merge rebasing
  • 48. REBASE: realinha a história de uma branch em relação a sua branch base (possívelmente o alvo para merge) git rebase master
  • 49. 1) Dar checkout para a master localmente 2) Criar uma branch nova a partir da mesma (feature/3) 3) Adicionar um arquivo novo com algum conteúdo 4) Realizar o commit deste arquivo 5) Dar checkout para a master 6) Realizar o merge da nova branch (feature/3) na master 7) Dar checkout para a feature/2 8) Realizar o rebase com a master 9) Dar push da feature/2 para a nuvem (realizar o rebase) 10
  • 50. TAGGING - commit (hash) - branch (HEAD) - tag 3x CHECKOUT TAG: marcar uma hash de uma maneira legível para humanos
  • 51. TAG: realiza a listagem de tags (locais) git tag <<nome da tag>>: realiza a marcação da hash de commit com um nome git tag <<nome_da_tag>> PUSH <<nome_da_tag>>: disponibiliza a tag na nuvem git push origin <<nome_da_tag>>
  • 52. PULL REQUEST ● Envolve a branch base e a branch de comparação ● Processo fornecido pelos serviços de repositório ● Permite a comparação entre as branches O QUE É?
  • 53. 1) Dar push da master para a nuvem 2) Fazer checkout da master para uma nova branch (feature/4) 3) Modificar o conteúdo dos arquivos existentes na branch 4) Adicionar alguns arquivos e conteúdo dentro dos mesmos 5) Realizar o commit 6) Dar push da branch nova para a nuvem 7) Ir até o serviço de repositório remoto e criar o pull request 8) Validar as alterações e fazer o merge na modalidade fast-foward 9) Verificar os commits da master da nuvem e se certificar de que os commits estão na mesma (realizar merge através de pull request) 15
  • 54. VERSIONAMENTO SEMÂNTICO MAJOR: versão que marca uma quebra de compatibilidade com a anterior MINOR: versão que adiciona uma funcionalidade que tem compatibilidade com a versão major PATCH: versão que marca uma correção compatível com a versão minor MAJOR.MINOR.PATCH (v0.0.0)
  • 55. FLUXOS DE TRABALHO CENTRALIZED WORKFLOW - Centrado na master FEATURE BRANCH WORKFLOW - Master é sagrada! - Funcionalidades são desenvolvidas em branches separadas, sem incomodar o código principal - Permite discussões acerca da branch GIT FLOW - Foi apresentado por Vincent Driessen - Desenhado para as releases de projeto - Para gerenciar projetos grandes - Trabalha com duas branches de longa vida: master e develop - Branches de vida curta: feature, release e hotfix
  • 56. FLUXOS DE TRABALHO GIT FLOW (COMEÇO) MASTER DEVELOP HEAD HEAD (v0.0.0)
  • 57. FEATURE/1 FLUXOS DE TRABALHO GIT FLOW (FEATURE~DEVELOP) DEVELOP COMMIT 1 COMMIT 2 (v0.1.0)
  • 58. FLUXOS DE TRABALHO GIT FLOW (HOTFIX) MASTER DEVELOP (v0.0.1) COMMIT 3 HOTFIX/1 (v0.1.0) COMMIT 3
  • 59. FLUXOS DE TRABALHO GIT FLOW (RELEASE) MASTER DEVELOP (v0.0.1) COMMIT 4 RELEASE/1(0.1.0) (v0.1.0 ~ HEAD) (v0.1.0 ~ HEAD)
  • 60. FLUXOS DE TRABALHO Perguntas: “ Quando você está avaliando implementar um fluxo de trabalho para sua equipe, é mais importante considerar a cultura da mesma. Afinal, você quer implementar um fluxo para aumentar a efetividade da equipe e não para ser um fardo que limita a produtividade. “ - Este fluxo escala para o tamanho da equipe? - É simples desfazer os erros com este fluxo? - Este fluxo impõe qualquer carga desnecessário para a equipe?