SlideShare uma empresa Scribd logo
1 de 22
Fluxo de Versionamento 
William Lima 
Avanti Agência Digital
Sistema de Controle de 
Versão 
• Controle de histórico 
• Trabalho em equipe 
• Marcação e resgate de versões estáveis 
• Ramificação do Projeto
Por que Git? 
• Distribuído 
• Um clone “completo” vai para a maquina do desenvolvedor. 
• Versionamento local. 
• Modelo de Branch. 
• Fácil: checkout -b <nomeDoBanchFeature> 
• Conveniente: Tente, crie, comite, descarte, volte atrás. 
• Pequeno e Rápido. 
• Processos Locais. 
• Confiabilidade. 
• Efetivo.
Benchmarking 
Não acho justo, mas também é um ponto a se analisar.
Free e Open Source 
• GPLv2 
• Free, e melhor… 
• Free para sempre.
“O software é como sexo, é melhor quando é 
livre.” 
–Linus Torvalds (criador do Linux e Git)
Funções Básicas 
$git init 
Transforma o diretório atual em repositório git. 
$git init <dir> 
Cria um diretório <dir> e transforma em repositório 
git. 
$git clone <repo.git> 
Clona o repositório para maquina local 
$git clone <repo.git> <dir> 
Clona o repositório para maquina o diretório <dir> 
Realiza o commit com a mensagem 
$git status 
Lista arquivos que não estão na área transitória, e 
os arquivos que não estão sendo rastreados. 
$git add <arquivo|dir> 
adiciona as mudanças do arquivo | diretório 
$git reset <arquivo> 
Remove as mudanças do arquivo 
$git commit -m ‘<msg>' 
Realiza o commit com a mensagem 
git blame <arquivo> 
Exibe quem modificou cada linha do arquivo 
<arquivo>, incluindo a data e commit. 
$git diff <commit> 
Exibe a diferença nos arquivos entre o commit 
<commit> e o diretório local
Fluxo Git 
Agora é para complicar!
Fluxo Git 
• Ramificações (Branchs) Principais: 
• Master 
• Desenvolvimento 
• Ramificações de Auxiliares 
• Feature 
• Release 
• Hot-fix
Fluxo Git 
main branches 
Ramificações Principais 
• MASTER: é o código fonte 
principal, deve refletir o que 
está em produção atualmente. 
• DEVELOP: refere-se as 
últimas mudanças para o 
próximo release.
Fluxo Git 
support branches 
Ramificações Auxiliares 
FEATURE 
• Utilizada para novos recursos ou 
releases distantes. 
• Normalmente saem de um brach 
de desenvolvimento. 
• Deve ser feito fundido de volta ao 
branch de desenvolvimento. 
• Convenção de nome do branch: 
<desenvolvedor>-<feature> 
william-galeria
Fluxo Git 
support branches 
Ramificações Auxiliares 
RELEASE 
• Prepara o versionamento para 
produção (número da versão, 
etc). 
• Origem natural: DEVELOP 
• Enviadados para MASTER e 
DEVELOP 
• Convenção de nome do branch: 
release-* 
release-1.0
Fluxo Git 
support branches 
Ramificações Auxiliares 
HOT-FIX 
• Quando é necessário fazer uma 
correção imediata. Bug Crítico. 
• SEMPRE deve ter sua origem na 
versão que está em produção 
atualmente. 
• Deve enviar suas correções para 
MASTER e DEVELOP 
• Convenção de nome do branch: 
hotfix-* 
hotfix-1.2.1
Feature. Como? 
$ git checkout -b myfeature develop 
Switched to a new branch “myfeature” 
• >>>> Faço o que tem fazer 
$ git checkout develop 
Switched to branch 'develop' 
$ git merge --no-ff myfeature 
Updating ea1b82a..05e9557 
(Summary of changes) 
$ git branch -d myfeature 
Deleted branch myfeature (was 05e9557). 
$ git push origin develop
--no-ff 
• Esta flag gera mais um commit 
no merge. 
• Sem ela é impossível 
acompanhar a origem das 
mudanças (de qual branch 
saiu). 
• Sem ela você precisa ler todo 
o log para acompanhar de 
onde cada mudança se 
originou.
Release. Como? 
$ git checkout -b release-1.2 develop 
Switched to a new branch "release-1.2" 
Modifique manualmente os arquivos README, RELEASE, 
NOTES, ETC. 
$ git commit -a -m "Bumped version number to 1.2" 
[release-1.2 74d9424] Bumped version number to 
1.2 
1 files changed, 1 insertions(+), 1 deletions(-)
Fechando o Release. Como? 
Você precisa passar as modificações para o branch principal, o master, e colocar uma tag nesta versão. 
$ git checkout master 
Switched to branch 'master' 
$ git merge --no-ff release-1.2 
Merge made by recursive. 
(Summary of changes) 
Você precisa também garantir que o branch develop seja atualizado com as informações. 
$ git tag -a 1.2 
git checkout develop 
Switched to branch 'develop' 
$ git merge --no-ff release-1.2 
Merge made by recursive. 
(Summary of changes) 
Agora você deve com calma resolver os conflitos de merge. 
Por último excluir o branch release. 
$ git branch -d release-1.2 
Deleted branch release-1.2 (was ff452fe).
Hot-Fix. Como? 
$ git checkout -b hotfix-1.2.1 master 
Switched to a new branch "hotfix-1.2.1" 
Modifique manualmente os arquivos README, RELEASE, NOTES, ETC. 
$ git commit -a -m "Bumped version number to 1.2.1" 
[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1 
1 files changed, 1 insertions(+), 1 deletions(-) 
Corrija o bug e faça commit. 
$ git commit -m "Fixed severe production problem" 
[hotfix-1.2.1 abbe5d6] Fixed severe production problem 
5 files changed, 32 insertions(+), 17 deletions(-)
Fechando Hot-Fix. Como? 
Você precisa passar as modificações para o branch principal, o master, e colocar uma tag nesta versão. 
$ git checkout master 
Switched to branch 'master' 
$ git merge --no-ff hotfix-1.2.1 
Merge made by recursive. 
(Summary of changes) 
$ git tag -a 1.2.1 
Você precisa também garantir que o branch develop seja atualizado com as informações. 
$ git checkout develop 
Switched to branch 'develop' 
$ git merge --no-ff hotfix-1.2.1 
Merge made by recursive. 
(Summary of changes) 
Agora você deve com calma resolver os conflitos de merge. 
Por último excluir o branch release. 
git branch -d hotfix-1.2.1 
Deleted branch hotfix-1.2.1 (was abbe5d6).
Referências 
• http://nvie.com/posts/a-successful-git-branching-model/ 
• https://www.atlassian.com/git/workflows#!workflow-gitflow 
• http://learn.github.com/p/tagging.html 
• http://git-scm.com/ 
• http://rogerdudler.github.io/git-guide/index.pt_BR.html 
• http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks 
• http://www.javaworld.com/article/2113465/developer-tools-ideit-smart- 
20-essential-tips-for-/developer-tools-ide/git-smart-20- 
essential-tips-for-git-and-github-users.html

Mais conteúdo relacionado

Mais procurados

Migration & upgrades best practice upgrade pathways to emc documentum 7
Migration & upgrades   best practice upgrade pathways to emc documentum 7Migration & upgrades   best practice upgrade pathways to emc documentum 7
Migration & upgrades best practice upgrade pathways to emc documentum 7
Haytham Ghandour
 

Mais procurados (20)

Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introduction
 
Integrate any Angular Project into WebSphere Portal
Integrate any Angular Project into WebSphere PortalIntegrate any Angular Project into WebSphere Portal
Integrate any Angular Project into WebSphere Portal
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec Jenkins
 
DevOps explained
DevOps explainedDevOps explained
DevOps explained
 
ManageEngine's Patch Manager Plus
ManageEngine's Patch Manager PlusManageEngine's Patch Manager Plus
ManageEngine's Patch Manager Plus
 
CI/CD Best Practices for Your DevOps Journey
CI/CD Best  Practices for Your DevOps JourneyCI/CD Best  Practices for Your DevOps Journey
CI/CD Best Practices for Your DevOps Journey
 
Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1
 
Washington DC MuleSoft Meetup: CI/CD Pipeline with MuleSoft and Azure DevOps
Washington DC MuleSoft Meetup: CI/CD Pipeline with MuleSoft and Azure DevOpsWashington DC MuleSoft Meetup: CI/CD Pipeline with MuleSoft and Azure DevOps
Washington DC MuleSoft Meetup: CI/CD Pipeline with MuleSoft and Azure DevOps
 
Git flow
Git flowGit flow
Git flow
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Introduction to DevOps slides.pdf
Introduction to DevOps slides.pdfIntroduction to DevOps slides.pdf
Introduction to DevOps slides.pdf
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
 
Migration & upgrades best practice upgrade pathways to emc documentum 7
Migration & upgrades   best practice upgrade pathways to emc documentum 7Migration & upgrades   best practice upgrade pathways to emc documentum 7
Migration & upgrades best practice upgrade pathways to emc documentum 7
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 
Jenkins Automation
Jenkins AutomationJenkins Automation
Jenkins Automation
 
Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 

Destaque

Destaque (8)

Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowControle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
 
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
 
Scrum - Gerenciamento de Projetos
Scrum - Gerenciamento de ProjetosScrum - Gerenciamento de Projetos
Scrum - Gerenciamento de Projetos
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e BazaarGerenciadores de Controle de Versão: Git, Mercurial e Bazaar
Gerenciadores de Controle de Versão: Git, Mercurial e Bazaar
 
Como demonstrar ROI das entregas de valor com Business Case
Como demonstrar ROI das entregas de valor com Business Case Como demonstrar ROI das entregas de valor com Business Case
Como demonstrar ROI das entregas de valor com Business Case
 
Análise de Negócio na Perspectiva de BI
Análise de Negócio na Perspectiva de BIAnálise de Negócio na Perspectiva de BI
Análise de Negócio na Perspectiva de BI
 
Resumo do Guia BABOK® 3
Resumo do Guia BABOK®  3 Resumo do Guia BABOK®  3
Resumo do Guia BABOK® 3
 

Semelhante a Git - Fluxo do Versionamento adotado

Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na samba
joaogmaciel
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
Raphael Cruzeiro
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
Armando Couto
 

Semelhante a Git - Fluxo do Versionamento adotado (20)

Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Introdução ao Git
Introdução ao Git   Introdução ao Git
Introdução ao Git
 
Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na samba
 
Git 101
Git 101Git 101
Git 101
 
Git workshop
Git workshopGit workshop
Git workshop
 
Git
GitGit
Git
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Git
GitGit
Git
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Git flow no projeto
Git flow no projetoGit flow no projeto
Git flow no projeto
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Sendo um GIT master
Sendo um GIT masterSendo um GIT master
Sendo um GIT master
 
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
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
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
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Oficina de Git EEDACT2015
Oficina de Git EEDACT2015Oficina de Git EEDACT2015
Oficina de Git EEDACT2015
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
 
Git + git hub
Git + git hubGit + git hub
Git + git hub
 

Último

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)

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
 
Certificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfCertificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.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...
 
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
 
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
 
[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)
 

Git - Fluxo do Versionamento adotado

  • 1. Fluxo de Versionamento William Lima Avanti Agência Digital
  • 2. Sistema de Controle de Versão • Controle de histórico • Trabalho em equipe • Marcação e resgate de versões estáveis • Ramificação do Projeto
  • 3. Por que Git? • Distribuído • Um clone “completo” vai para a maquina do desenvolvedor. • Versionamento local. • Modelo de Branch. • Fácil: checkout -b <nomeDoBanchFeature> • Conveniente: Tente, crie, comite, descarte, volte atrás. • Pequeno e Rápido. • Processos Locais. • Confiabilidade. • Efetivo.
  • 4. Benchmarking Não acho justo, mas também é um ponto a se analisar.
  • 5. Free e Open Source • GPLv2 • Free, e melhor… • Free para sempre.
  • 6. “O software é como sexo, é melhor quando é livre.” –Linus Torvalds (criador do Linux e Git)
  • 7. Funções Básicas $git init Transforma o diretório atual em repositório git. $git init <dir> Cria um diretório <dir> e transforma em repositório git. $git clone <repo.git> Clona o repositório para maquina local $git clone <repo.git> <dir> Clona o repositório para maquina o diretório <dir> Realiza o commit com a mensagem $git status Lista arquivos que não estão na área transitória, e os arquivos que não estão sendo rastreados. $git add <arquivo|dir> adiciona as mudanças do arquivo | diretório $git reset <arquivo> Remove as mudanças do arquivo $git commit -m ‘<msg>' Realiza o commit com a mensagem git blame <arquivo> Exibe quem modificou cada linha do arquivo <arquivo>, incluindo a data e commit. $git diff <commit> Exibe a diferença nos arquivos entre o commit <commit> e o diretório local
  • 8. Fluxo Git Agora é para complicar!
  • 9. Fluxo Git • Ramificações (Branchs) Principais: • Master • Desenvolvimento • Ramificações de Auxiliares • Feature • Release • Hot-fix
  • 10.
  • 11. Fluxo Git main branches Ramificações Principais • MASTER: é o código fonte principal, deve refletir o que está em produção atualmente. • DEVELOP: refere-se as últimas mudanças para o próximo release.
  • 12. Fluxo Git support branches Ramificações Auxiliares FEATURE • Utilizada para novos recursos ou releases distantes. • Normalmente saem de um brach de desenvolvimento. • Deve ser feito fundido de volta ao branch de desenvolvimento. • Convenção de nome do branch: <desenvolvedor>-<feature> william-galeria
  • 13. Fluxo Git support branches Ramificações Auxiliares RELEASE • Prepara o versionamento para produção (número da versão, etc). • Origem natural: DEVELOP • Enviadados para MASTER e DEVELOP • Convenção de nome do branch: release-* release-1.0
  • 14. Fluxo Git support branches Ramificações Auxiliares HOT-FIX • Quando é necessário fazer uma correção imediata. Bug Crítico. • SEMPRE deve ter sua origem na versão que está em produção atualmente. • Deve enviar suas correções para MASTER e DEVELOP • Convenção de nome do branch: hotfix-* hotfix-1.2.1
  • 15.
  • 16. Feature. Como? $ git checkout -b myfeature develop Switched to a new branch “myfeature” • >>>> Faço o que tem fazer $ git checkout develop Switched to branch 'develop' $ git merge --no-ff myfeature Updating ea1b82a..05e9557 (Summary of changes) $ git branch -d myfeature Deleted branch myfeature (was 05e9557). $ git push origin develop
  • 17. --no-ff • Esta flag gera mais um commit no merge. • Sem ela é impossível acompanhar a origem das mudanças (de qual branch saiu). • Sem ela você precisa ler todo o log para acompanhar de onde cada mudança se originou.
  • 18. Release. Como? $ git checkout -b release-1.2 develop Switched to a new branch "release-1.2" Modifique manualmente os arquivos README, RELEASE, NOTES, ETC. $ git commit -a -m "Bumped version number to 1.2" [release-1.2 74d9424] Bumped version number to 1.2 1 files changed, 1 insertions(+), 1 deletions(-)
  • 19. Fechando o Release. Como? Você precisa passar as modificações para o branch principal, o master, e colocar uma tag nesta versão. $ git checkout master Switched to branch 'master' $ git merge --no-ff release-1.2 Merge made by recursive. (Summary of changes) Você precisa também garantir que o branch develop seja atualizado com as informações. $ git tag -a 1.2 git checkout develop Switched to branch 'develop' $ git merge --no-ff release-1.2 Merge made by recursive. (Summary of changes) Agora você deve com calma resolver os conflitos de merge. Por último excluir o branch release. $ git branch -d release-1.2 Deleted branch release-1.2 (was ff452fe).
  • 20. Hot-Fix. Como? $ git checkout -b hotfix-1.2.1 master Switched to a new branch "hotfix-1.2.1" Modifique manualmente os arquivos README, RELEASE, NOTES, ETC. $ git commit -a -m "Bumped version number to 1.2.1" [hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1 1 files changed, 1 insertions(+), 1 deletions(-) Corrija o bug e faça commit. $ git commit -m "Fixed severe production problem" [hotfix-1.2.1 abbe5d6] Fixed severe production problem 5 files changed, 32 insertions(+), 17 deletions(-)
  • 21. Fechando Hot-Fix. Como? Você precisa passar as modificações para o branch principal, o master, e colocar uma tag nesta versão. $ git checkout master Switched to branch 'master' $ git merge --no-ff hotfix-1.2.1 Merge made by recursive. (Summary of changes) $ git tag -a 1.2.1 Você precisa também garantir que o branch develop seja atualizado com as informações. $ git checkout develop Switched to branch 'develop' $ git merge --no-ff hotfix-1.2.1 Merge made by recursive. (Summary of changes) Agora você deve com calma resolver os conflitos de merge. Por último excluir o branch release. git branch -d hotfix-1.2.1 Deleted branch hotfix-1.2.1 (was abbe5d6).
  • 22. Referências • http://nvie.com/posts/a-successful-git-branching-model/ • https://www.atlassian.com/git/workflows#!workflow-gitflow • http://learn.github.com/p/tagging.html • http://git-scm.com/ • http://rogerdudler.github.io/git-guide/index.pt_BR.html • http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks • http://www.javaworld.com/article/2113465/developer-tools-ideit-smart- 20-essential-tips-for-/developer-tools-ide/git-smart-20- essential-tips-for-git-and-github-users.html