SlideShare uma empresa Scribd logo
Fluxo de
Desenvolvimento de
Software utilizando Git
Bruno Ricardo Siqueira
Agenda
Agenda
● O palestrante
● CI&T
● GIT
o Origem e evolução
o Diferenciais
o Ferramentas
o Quem está utilizando
Agenda
● Fluxos de desenvolvimento
o Centralizado
o Integração gerenciada
o Dictator and Lieutenants
o Feature Branch
o Gitflow
Agenda
● Conclusões
● Perguntas
O palestrante
Bruno Ricardo Siqueira.
Desenvolvedor web e evangelista
PHP no Brasil. Entusiasta Docker.
Apaixonado por Git.
Trabalhando com internet há 8 anos,
Bacharel em Sistemas da
Informação formado pelo ICMC -
USP, trabalhando atualmente na
empresa CI&T, desempenhando o
papel de Engenheiro de Software.
O palestrante
Fluxo de desenvolvimento de software utilizando Git
Colabore.
Inove.
Transforme.
Ci&T
Fluxo de desenvolvimento de software utilizando Git
Git
Git - Origem e evoluçãoGit - Origem e evolução
● 2002 - 2005: Linux + BitKeeper
● Abril/2005: Linus Torvalds cria
o Git
● Junho/2005: Git passa a ser o
gerenciador oficial do Kernel do
Linux
Git - Origem e evolução
● Julho/2005: Junio Hamano
passa a ser o mantenedor
oficial
● Dezembro/2005: Versão 1.0
● Fevereiro/2008: Nasce a
ferramenta colaborativa GitHub
● Outubro/2011: BitBucket
adiciona suporte ao Git
Git - Origem e evolução
20102009 2014
2,4%
Fonte: Eclipse Community Survey - http://eclipse.dzone.com/articles/eclipse-community-survey-2014
33,3%
Em 2015 já são
mais de 20 milhões
de repositórios e
9 milhões de usuários.
Git - Origem e evolução
Em 2013 apenas no GitHub
existiam mais de
10 milhões de
repositórios
ativos.
Git: an
unpleasant
or
contemptible
person.
“I'm an egotistical bastard, and I
name all my projects after myself.
First Linux, now git.”
- Linus Torvalds
Git - Origem e evolução
Git - Diferenciais
● Distribuído
● Integridade do código garantida
● Staging area
● Licenciado sob GNU Public
License v 2.0: OPEN
SOURCE!!!
Git - Diferenciais
● Branching and Merging
o mudança de contexto
facilitada
o codebases baseadas em
regras
● Leve: baixo consumo de
memória
● Robusto: criado para lidar com
codebases gigantescas
● Rápido, muito rápido
Fonte: Git Website - http://git-scm.com
Flexível
ao
extremo.
Git - Ferramentas
Git - Quem está utilizando?
● Empresas de tecnologia e
software
● Empresas de telecomunicações
● ...
Fluxos de
desenvolvimento
Fluxos de desenvolvimento - Centralizado
● Mesmo estilo do Subversion
● Repositório central
compartilhado
● Bom para efetuar a transição do
SVN para o Git
Mesmo
fluxo do
Subversion
só que ainda
melhor!
Fluxos de desenvolvimento - Centralizado
Joffrey cria um repositório central:
ssh joffrey@westeros git init --bare
/kings/landing/iron-throne.git
Cersei e Tywin clonam o repositório central:
git clone cersei@westeros/kings/landing/iron-
throne.git
git clone tywin@westeros/kings/landing/iron-
throne.git
Joffrey trabalha em seu repositório
local:
git status # View the state of the repo
git add <some-file> # Stage a file
git commit # Commit a file</some-file>
Fluxos de desenvolvimento - Centralizado
Cersei trabalha em sua feature em
separado, também em seu
repositório local.
Joffrey publica sua funcionalidade:
git push origin master
Fluxos de desenvolvimento - Centralizado
Cersei tenta publicar sua
funcionalidade mas tem sua
requisição recusada.
Cersei faz um rebase de suas
alterações em cima das alterações
de Joffrey:
git pull --rebase origin master
Fluxos de desenvolvimento - Centralizado
Cersei soluciona os conflitos,
adiciona suas alterações:
git add <some-file>
git rebase --continue
Fluxos de desenvolvimento - Centralizado
Cersei publica suas alterações:
git push origin master
Fluxos de desenvolvimento - Integração gerenciada
● Somente o mantenedor do
efetua commits no repositório
original
● Contribuidores trabalham em
forks.
● Integrações são solicitadas via
pull request e efetuadas pelo
mantenedor
● GitHub, BitBucket, GitLab, ....
Fluxos de desenvolvimento - Dictator and Lieutenants
● Tenentes gerenciam
repositórios dos módulos
● Contribuidores trabalham em
forks dos módulos
● Ditador gerencia integrações
entre os módulos
● Linux kernel
Fluxos de desenvolvimento - Feature branch
● Features desenvolvidas em
branches separadas
● Mantenedor efetua merge das
features finalizadas
● Merge e/ou pull requests
● CI&T, Aptor, Google, PayPal,
Facebook...
Cersei inicia uma nova
funcionalidade:
git checkout -b cersei-feature master
git status
git add <some-file>
git commit
Fluxos de desenvolvimento - Feature branch
Cersei termina seu expediente e
envia sua feature ao repositório
remoto:
git push -u origin cersei
Fluxos de desenvolvimento - Feature branch
Cersei finaliza sua funcionalidade e
envia ao repositório remoto central:
git push
Joffrey recebe um pull request e o
analiza.
Fluxos de desenvolvimento - Feature branch
Joffrey efetua o merge da feature de
Cersei:
git checkout master
git pull
git pull origin cersei-feature
git push
Cersei pode efetuar alterações em
sua feature, recomeçando o fluxo.
Fluxos de desenvolvimento - GitFlow
● Vincent Driessen (2010)
● Estabelece uma padronização
para o fluxo de feature branches
● master, develop, feature/*,
hotfix/*
● CI&T, Motorola, Google,
Facebook, Microsoft,
Atlassian...
Fluxos de desenvolvimento - GitFlow
Fluxos de desenvolvimento - GitFlow
GitFlow utilizado em ferramentas
como SourceTree e SmartGit
Conclusões
Conclusões
● Objetivos definidos
● A ferramenta deve se adaptar à
sua realidade
● Clareza nos processos
● Evitar burocratização
desnecessária
● Manter comunicação ativa
entre os membros do time
Conclusões
● Definir métricas
● Avaliar necessidades de
adaptação do fluxo
● Foco na eficiência
● Qualidade nas entregas
● Criar e manter documentação
do fluxo: gráficos, checklists...
Dúvidas?
Bruto
mesmo!
http://www.ciandt.com/card/vagas-abertas
bricardo@ciandt.com

Mais conteúdo relacionado

PDF
Uma alternativa ao GitFlow - FloripaJS
PPTX
Controlo de Versões Distribuído com Git - C. Augusto Proiete
PDF
LPUG Meetup #12 - Vitórias Rápidas com Liferay 7.3
PPTX
GitHub Boas Práticas
 
PPTX
Git - Fluxo do Versionamento adotado
PDF
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
PPTX
Mini aula-sublime-text-git-e-github
PPTX
Entrega eficiente de conteúdos em sites complexos
Uma alternativa ao GitFlow - FloripaJS
Controlo de Versões Distribuído com Git - C. Augusto Proiete
LPUG Meetup #12 - Vitórias Rápidas com Liferay 7.3
GitHub Boas Práticas
 
Git - Fluxo do Versionamento adotado
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Mini aula-sublime-text-git-e-github
Entrega eficiente de conteúdos em sites complexos

Mais procurados (12)

PDF
Testes com xUnit + Coding Dojo
PDF
Controle de versão com Git e BitBucket
PPTX
Compartilhando código entre frontend e backend com Node.js
PDF
Usando Git na Unity - Gaming For All 2021
PDF
Docker como super comando
PDF
.NET 6: O que há de novo e o que está por vir?
PPTX
Introdução ao Habitat
PDF
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
PPTX
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...
ODP
Python e frameworks web
PPT
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo
PPT
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
Testes com xUnit + Coding Dojo
Controle de versão com Git e BitBucket
Compartilhando código entre frontend e backend com Node.js
Usando Git na Unity - Gaming For All 2021
Docker como super comando
.NET 6: O que há de novo e o que está por vir?
Introdução ao Habitat
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
.NET, Microsoft Azure e Tecnologias Open Source - Americana Tech Conf - Novem...
Python e frameworks web
Extração de Dados na Web com MongoDB e Selenium - TDC 2018 - São Paulo
APIs Multiplataforma com o ASP.NET Core: Presente e Futuro - .NET Conf Local ...
Anúncio

Destaque (16)

PPT
Design Patterns - Conhecendo os padrões de projeto
PDF
Desvendando padrões para desenvolvimento web, base para o sucesso
PPTX
Design pattern
PPTX
Introdução ao Git
ODP
Design Patterns
PDF
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
PPT
Design Patterns
PDF
PDF
#1 - Git - Introdução
PDF
Design Patterns com PHP
PPT
Padrões de Projeto
PDF
PDF
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
PDF
Exemplos de Design Patterns em Java
PPTX
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
KEY
Orientação a Objetos com PHP
Design Patterns - Conhecendo os padrões de projeto
Desvendando padrões para desenvolvimento web, base para o sucesso
Design pattern
Introdução ao Git
Design Patterns
Banca: Proposta de Arquitetura de Desenvolvimento Web Baseada em PHP Utilizan...
Design Patterns
#1 - Git - Introdução
Design Patterns com PHP
Padrões de Projeto
Node.js - #7 - Core Modules - http - Parte 1 - Rodrigo Branas
Exemplos de Design Patterns em Java
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Orientação a Objetos com PHP
Anúncio

Semelhante a Fluxo de desenvolvimento de software utilizando Git (20)

PDF
gitflow 11111111111111111111111111111.pdf
PPTX
PDC - Engenharia - Git e Gitorious
PDF
Git flow na prática
PDF
Introducao ao Git
PPTX
O Fantástico Mundo de Git
PPTX
Conhecendo o git.
PPSX
Git e boas praticas!
PPTX
Modelo de branches e GitFlow
PPTX
PDF
Minicurso GIT Completo (2022)
PDF
Git Workflow
PDF
Git workshop
PDF
Minicurso GIT 2022 - SENAC
PPTX
Ferramentas para versionamento Utilizando git
PPTX
Controle de Versões com Git + Github
PDF
Gerência de configuração ágil
PPTX
Migração SVN para GIT
KEY
Git para quem vem do SVN
PDF
Controle de versão com Git
gitflow 11111111111111111111111111111.pdf
PDC - Engenharia - Git e Gitorious
Git flow na prática
Introducao ao Git
O Fantástico Mundo de Git
Conhecendo o git.
Git e boas praticas!
Modelo de branches e GitFlow
Minicurso GIT Completo (2022)
Git Workflow
Git workshop
Minicurso GIT 2022 - SENAC
Ferramentas para versionamento Utilizando git
Controle de Versões com Git + Github
Gerência de configuração ágil
Migração SVN para GIT
Git para quem vem do SVN
Controle de versão com Git

Mais de Bruno Ricardo Siqueira (6)

PDF
Managing e commerce systems codebase with git
PDF
Construindo aplicações CLI com Symfony Console
PDF
TDC SP 2015 - PHP7: better & faster
PDF
TDC SP 2015 - PHP7: melhor e mais rápido
PDF
Impulsionando sua presença Online
PDF
Desenvolvendo e implantando aplicações PHP utilizando Docker
Managing e commerce systems codebase with git
Construindo aplicações CLI com Symfony Console
TDC SP 2015 - PHP7: better & faster
TDC SP 2015 - PHP7: melhor e mais rápido
Impulsionando sua presença Online
Desenvolvendo e implantando aplicações PHP utilizando Docker

Último (7)

PPTX
Mapeamento de Objeto para Tabela Relacional
PPTX
Curso de Windows 11 resumido na prática.pptx
PDF
apresentacao introducao computacao ead.pdf
PDF
Dos requisitos ao código: como criar código rastreável em PHP
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PDF
Evolução em código: algoritmos genéticos com PHP
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Mapeamento de Objeto para Tabela Relacional
Curso de Windows 11 resumido na prática.pptx
apresentacao introducao computacao ead.pdf
Dos requisitos ao código: como criar código rastreável em PHP
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Evolução em código: algoritmos genéticos com PHP
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO

Fluxo de desenvolvimento de software utilizando Git

  • 1. Fluxo de Desenvolvimento de Software utilizando Git Bruno Ricardo Siqueira
  • 3. Agenda ● O palestrante ● CI&T ● GIT o Origem e evolução o Diferenciais o Ferramentas o Quem está utilizando
  • 4. Agenda ● Fluxos de desenvolvimento o Centralizado o Integração gerenciada o Dictator and Lieutenants o Feature Branch o Gitflow
  • 7. Bruno Ricardo Siqueira. Desenvolvedor web e evangelista PHP no Brasil. Entusiasta Docker. Apaixonado por Git. Trabalhando com internet há 8 anos, Bacharel em Sistemas da Informação formado pelo ICMC - USP, trabalhando atualmente na empresa CI&T, desempenhando o papel de Engenheiro de Software. O palestrante
  • 11. Git
  • 12. Git - Origem e evoluçãoGit - Origem e evolução ● 2002 - 2005: Linux + BitKeeper ● Abril/2005: Linus Torvalds cria o Git ● Junho/2005: Git passa a ser o gerenciador oficial do Kernel do Linux
  • 13. Git - Origem e evolução ● Julho/2005: Junio Hamano passa a ser o mantenedor oficial ● Dezembro/2005: Versão 1.0 ● Fevereiro/2008: Nasce a ferramenta colaborativa GitHub ● Outubro/2011: BitBucket adiciona suporte ao Git
  • 14. Git - Origem e evolução 20102009 2014 2,4% Fonte: Eclipse Community Survey - http://eclipse.dzone.com/articles/eclipse-community-survey-2014 33,3%
  • 15. Em 2015 já são mais de 20 milhões de repositórios e 9 milhões de usuários. Git - Origem e evolução Em 2013 apenas no GitHub existiam mais de 10 milhões de repositórios ativos.
  • 17. “I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.” - Linus Torvalds Git - Origem e evolução
  • 18. Git - Diferenciais ● Distribuído ● Integridade do código garantida ● Staging area ● Licenciado sob GNU Public License v 2.0: OPEN SOURCE!!!
  • 19. Git - Diferenciais ● Branching and Merging o mudança de contexto facilitada o codebases baseadas em regras ● Leve: baixo consumo de memória ● Robusto: criado para lidar com codebases gigantescas ● Rápido, muito rápido Fonte: Git Website - http://git-scm.com
  • 22. Git - Quem está utilizando? ● Empresas de tecnologia e software ● Empresas de telecomunicações ● ...
  • 24. Fluxos de desenvolvimento - Centralizado ● Mesmo estilo do Subversion ● Repositório central compartilhado ● Bom para efetuar a transição do SVN para o Git
  • 26. Fluxos de desenvolvimento - Centralizado Joffrey cria um repositório central: ssh joffrey@westeros git init --bare /kings/landing/iron-throne.git Cersei e Tywin clonam o repositório central: git clone cersei@westeros/kings/landing/iron- throne.git git clone tywin@westeros/kings/landing/iron- throne.git
  • 27. Joffrey trabalha em seu repositório local: git status # View the state of the repo git add <some-file> # Stage a file git commit # Commit a file</some-file> Fluxos de desenvolvimento - Centralizado Cersei trabalha em sua feature em separado, também em seu repositório local.
  • 28. Joffrey publica sua funcionalidade: git push origin master Fluxos de desenvolvimento - Centralizado Cersei tenta publicar sua funcionalidade mas tem sua requisição recusada.
  • 29. Cersei faz um rebase de suas alterações em cima das alterações de Joffrey: git pull --rebase origin master Fluxos de desenvolvimento - Centralizado
  • 30. Cersei soluciona os conflitos, adiciona suas alterações: git add <some-file> git rebase --continue Fluxos de desenvolvimento - Centralizado Cersei publica suas alterações: git push origin master
  • 31. Fluxos de desenvolvimento - Integração gerenciada ● Somente o mantenedor do efetua commits no repositório original ● Contribuidores trabalham em forks. ● Integrações são solicitadas via pull request e efetuadas pelo mantenedor ● GitHub, BitBucket, GitLab, ....
  • 32. Fluxos de desenvolvimento - Dictator and Lieutenants ● Tenentes gerenciam repositórios dos módulos ● Contribuidores trabalham em forks dos módulos ● Ditador gerencia integrações entre os módulos ● Linux kernel
  • 33. Fluxos de desenvolvimento - Feature branch ● Features desenvolvidas em branches separadas ● Mantenedor efetua merge das features finalizadas ● Merge e/ou pull requests ● CI&T, Aptor, Google, PayPal, Facebook...
  • 34. Cersei inicia uma nova funcionalidade: git checkout -b cersei-feature master git status git add <some-file> git commit Fluxos de desenvolvimento - Feature branch Cersei termina seu expediente e envia sua feature ao repositório remoto: git push -u origin cersei
  • 35. Fluxos de desenvolvimento - Feature branch Cersei finaliza sua funcionalidade e envia ao repositório remoto central: git push Joffrey recebe um pull request e o analiza.
  • 36. Fluxos de desenvolvimento - Feature branch Joffrey efetua o merge da feature de Cersei: git checkout master git pull git pull origin cersei-feature git push Cersei pode efetuar alterações em sua feature, recomeçando o fluxo.
  • 37. Fluxos de desenvolvimento - GitFlow ● Vincent Driessen (2010) ● Estabelece uma padronização para o fluxo de feature branches ● master, develop, feature/*, hotfix/* ● CI&T, Motorola, Google, Facebook, Microsoft, Atlassian...
  • 39. Fluxos de desenvolvimento - GitFlow GitFlow utilizado em ferramentas como SourceTree e SmartGit
  • 41. Conclusões ● Objetivos definidos ● A ferramenta deve se adaptar à sua realidade ● Clareza nos processos ● Evitar burocratização desnecessária ● Manter comunicação ativa entre os membros do time
  • 42. Conclusões ● Definir métricas ● Avaliar necessidades de adaptação do fluxo ● Foco na eficiência ● Qualidade nas entregas ● Criar e manter documentação do fluxo: gráficos, checklists...