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

Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e GitIgor Steinmacher
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersDaniel Maia
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Mariana Camargo
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven DesignRafael Ponte
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao SwingArthur Emanuel
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summaryJan de Vries
 
Aula 04 - Diagrama de casos de uso
Aula 04 - Diagrama de casos de usoAula 04 - Diagrama de casos de uso
Aula 04 - Diagrama de casos de usoLeinylson Fontinele
 
Domain Driven Design com Python
Domain Driven Design com PythonDomain Driven Design com Python
Domain Driven Design com PythonFrederico Cabral
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dadoselliando dias
 

Mais procurados (20)

Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven Design
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 
UML
UMLUML
UML
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summary
 
Aula 04 - Diagrama de casos de uso
Aula 04 - Diagrama de casos de usoAula 04 - Diagrama de casos de uso
Aula 04 - Diagrama de casos de uso
 
Domain Driven Design com Python
Domain Driven Design com PythonDomain Driven Design com Python
Domain Driven Design com Python
 
Programação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a ObjetosProgramação Estruturada e Orientada a Objetos
Programação Estruturada e Orientada a Objetos
 
clean code
clean codeclean code
clean code
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dados
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Refactoring
RefactoringRefactoring
Refactoring
 

Destaque

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 FlowLucas Araújo Mezêncio
 
Scrum - Gerenciamento de Projetos
Scrum - Gerenciamento de ProjetosScrum - Gerenciamento de Projetos
Scrum - Gerenciamento de ProjetosWilliam Lima
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao GitUSP
 
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 BazaarIvanilton Polato
 
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 Rildo (@rildosan) Santos
 

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 versionamento

Semelhante a Git fluxo versionamento (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
 

Git fluxo versionamento

  • 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