Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Git Branching: Equívocos, Erros e Soluções

Git Branching: Equívocos, Erros e Soluções

Er Galvão Abbott

August 18, 2023
Tweet

More Decks by Er Galvão Abbott

Other Decks in Technology

Transcript

  1. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott -

    10/17/23 - 1 / 81 galvao.eti.br Git Branching Equívocos, Erros e Soluções v 0.2.0 - 2023-10-17
  2. Atua há 30 anos no Mercado de TI: Programador (>

    25), Professor / Palestrante (> 20) e Consultor (> 25) Engenheiro de Software Sênior / Tech Lead Professor Convidado (Especialista) de Pós-Graduação (PR e SC) Diretor, ConFLOSS, NodeConBR e PHP Conference Brasil Evangelista e Contribuidor para a Linguagem PHP Evangelista e Contribuidor para o Laminas Project Primeiro Brasileiro a se tornar Postman Supernova Presidente da ABRAPHP – Associação Brasileira de Profissionais PHP Apaixonado por Backend, APIs, Qualidade, Segurança e Software Livre galvao.eti.br galvao.eti.br Meu nome é Galvão CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/2023 – v0.2.0 – Slide 2 / 81
  3. galvao.eti.br Objetivo CC Attribution-ShareAlike 3.0 Unported License by Er Galvão

    Abbott - 10/17/23 - 3 / 81 Abrir o diálogo sobre versionamento e branching, pontos vitais em qualquer iniciativa de desenvolvimento. Como ocorre com infeliz frequência esses pontos – assim como diversos outros – não são debatidos o suficiente. E todos sofremos com isso.
  4. Quais palavras vêm a sua cabeça quando o assunto é

    git? galvao.eti.br Problema #0 CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 4 / 81
  5. Quais palavras vêm a sua cabeça quando o assunto é

    git? galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 5 / 81 Problema #0
  6. Quais palavras vêm a sua cabeça quando o assunto é

    git? galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 6 / 81 Versão Branch Commit Pull Request Merge Hub Problema #0
  7. Quais palavras vêm a sua cabeça quando o assunto é

    git? galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 7 / 81 Versão é importante, mas não é o conceito principal; Branch é importante, mas não é o conceito principal; Commit é importante, mas não é o conceito principal; Pull Request é importante, mas não é o conceito principal; Merge é importante, mas não é o conceito principal; Hub é importante, mas não é o conceito principal; Problema #0
  8. Quais palavras vêm a sua cabeça quando o assunto é

    git? galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 8 / 81 Versão é importante, mas não é o conceito principal; Branch é importante, mas não é o conceito principal; Commit é importante, mas não é o conceito principal; Pull Request é importante, mas não é o conceito principal; Merge é importante, mas não é o conceito principal; Hub é importante, mas não é o conceito principal; O conceito principal é primordial: Problema #0
  9. Quais palavras vêm a sua cabeça quando o assunto é

    git? galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 9 / 81 Versão é importante, mas não é o conceito principal; Branch é importante, mas não é o conceito principal; Commit é importante, mas não é o conceito principal; Pull Request é importante, mas não é o conceito principal; Merge é importante, mas não é o conceito principal; Hub é importante, mas não é o conceito principal; O conceito principal é primordial: TEMPO Problema #0
  10. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 10 / 81 Quais palavras vêm a sua cabeça quando o assunto é git? Problema #0
  11. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 11 / 81 X Quais palavras vêm a sua cabeça quando o assunto é git? Problema #0
  12. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 12 / 81
  13. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 13 / 81 MAIN TEMPO 09h Tempo Main dev #1 dev #2 09h 09h - 09h dev #1 dev #2
  14. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 14 / 81 MAIN TEMPO 09h 09h30min dev #1 Tempo Main dev #1 dev #2 09h30min 09h 09h 09h dev #2 clone
  15. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 15 / 81 MAIN TEMPO 09h 09h30min dev #1 dev #2 Tempo Main dev #1 dev #2 09h30min 09h 09h 09h
  16. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 16 / 81 MAIN TEMPO 09h 09h30min dev #1 commit dev #2 Tempo Main dev #1 dev #2 10h 09h 10h 09h 10h
  17. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 17 / 81 MAIN TEMPO 09h 09h30min dev #1 commit 10h 10h15min dev #2 Tempo Main dev #1 dev #2 10h15min 10h15min 10h15min 09h push
  18. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 18 / 81 MAIN TEMPO 09h 09h30min dev #1 10h 10h15min dev #2 Tempo Main dev #1 dev #2 11h 10h15min 10h15min 10h15min 11h pull
  19. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 19 / 81 MAIN TEMPO 09h 09h30min dev #1 10h 10h15min dev #2 Tempo Main dev #1 dev #2 11h 10h15min 10h15min 10h15min 11h
  20. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 20 / 81 MAIN TEMPO 09h 09h30min dev #1 10h 10h15min dev #2 commit Tempo Main dev #1 dev #2 12h 10h15min 10h15min 12h 11h 12h
  21. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 21 / 81 MAIN TEMPO 09h 09h30min dev #1 10h 10h15min dev #2 commit Tempo Main dev #1 dev #2 12h45min 12h 10h15min 12h 11h 12h45min 12h
  22. ”Um turno na vida de um projeto” galvao.eti.br Solução #0

    CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 22 / 81 MAIN TEMPO 09h 09h30min dev #1 10h 10h15min dev #2 Tempo Main dev #1 dev #2 12h45min 12h 12h 12h 11h 12h45min 12h pull
  23. “Fluxo ?! Que fluxo?” galvao.eti.br Problema #1 CC Attribution-ShareAlike 3.0

    Unported License by Er Galvão Abbott - 10/17/23 - 23 / 81
  24. “Fluxo?! Que fluxo?” galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by

    Er Galvão Abbott - 10/17/23 - 24 / 81 Produção (main) TEMPO Desenvolvimento (dev) dev #1 dev #2 dev #n . . . Problema #1
  25. Fluxo! galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão

    Abbott - 10/17/23 - 26 / 81 Solução #1 ...mas qual fluxo? Gitflow Github Flow Trunk Based … ou … DIY!!! ? ? ? ?
  26. galvao.eti.br Problema #2, #3, #4 … #n! CC Attribution-ShareAlike 3.0

    Unported License by Er Galvão Abbott - 10/17/23 - 27 / 81 “Eu vejo branches mortas” “De onde eu puxo?” “Main, dev, … ?!?!” … “Conflitos são coisa do mal”
  27. Doing it myself… or g-flow galvao.eti.br CC Attribution-ShareAlike 3.0 Unported

    License by Er Galvão Abbott - 10/17/23 - 28 / 81 Solução #1 /galvao-eti/g-flow t
  28. 1) Apresenta 4 tipos de branches: 1) Hotfix, Fix, Feature

    e Epic. 2) Branches Iniciais: 1) Desenvolvimento; 2) Homologação; 3) Produção. 3) Estabilidade: A branch de Produção só é atualizada por Hotfixes e Releases. 4) Organização: Fluxos claros e completos para cada tipo de branch. 5) Simplicidade: Ferramenta bash para trabalhar com todos os tipos. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 10/17/23 - 29 / 81 Conceitos
  29. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 32 / 81 Fluxo: Hotfix Após a identificação do bug o(a) Release Manager (RM) declara o início do Code Freeze.
  30. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 33 / 81 Fluxo: Hotfix Dev cria a branch com o nome no formato hotfix/issue a partir de Produção e imediatamente a cria remotamente
  31. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 34 / 81 Fluxo: Hotfix Dev trabalha na sua branch, testa a correção localmente, faz o push para a sua branch remota e notifica o(a) RM
  32. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 35 / 81 Fluxo: Hotfix O(a) RM faz o merge em Produção e Desenvolvimento
  33. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 36 / 81 Fluxo: Hotfix Estando declarada a solução do bug, o(a) RM lança a release a partir de Produção ...
  34. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 37 / 81 Fluxo: Hotfix … e faz o merge para todas as branches de Homologação e Produção.
  35. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 38 / 81 Fluxo: Hotfix … e faz o merge para todas as branches de Homologação e Produção.
  36. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 39 / 81 Fluxo: Hotfix … e faz o merge para todas as branches de Homologação e Produção.
  37. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 40 / 81 Fluxo: Hotfix … e faz o merge para todas as branches de Homologação e Produção.
  38. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 41 / 81 Fluxo: Hotfix O período de Code Freeze é encerrado
  39. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 43 / 81 Fluxo: Feature Dev cria a branch com o nome no formato feature/issue a partir de Produção e imediatamente a cria remotamente. Dev trabalha na sua branch, testa a feature localmente e faz pushes para a sua branch remota
  40. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 44 / 81 Fluxo: Feature Ao concluir o trabalho, Dev abre uma PR para Desenvolvimento. É realizado o Code Review
  41. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 45 / 81 Fluxo: Feature Se a PR for aprovada, o(a) RM faz o merge para Desenvolvimento e Homologação e declara o início do Code Freeze.
  42. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 46 / 81 Fluxo: Feature Em Homologação são realizados os testes de Regra de Negócio. Caso o trabalho seja homologado, ele é mergeado no ambiente de Homologação do Cliente
  43. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 47 / 81 Fluxo: Feature Se o cliente homologar, o(a) RM lança a release a partir de Homologação...
  44. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 48 / 81 Fluxo: Feature … e faz o merge para todas as branches de Homologação e Produção.
  45. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 49 / 81 Fluxo: Feature … e faz o merge para todas as branches de Homologação e Produção.
  46. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 50 / 81 Fluxo: Feature … e faz o merge para todas as branches de Homologação e Produção.
  47. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 51 / 81 Fluxo: Feature … e faz o merge para todas as branches de Homologação e Produção.
  48. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 52 / 81 Fluxo: Feature O período de Code Freeze é encerrado
  49. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 54 / 81 Fluxo: Epic Feature É criada uma branch com o nome no formato epic/nome_epic a partir de Produção
  50. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 55 / 81 Fluxo: Epic Feature Dev cria a branch com o nome no formato feature/issue a partir de epic/nome_epíc e imediatamente a cria remotamente. Dev trabalha na sua branch, testa a feature localmente e faz pushes para a sua branch remota
  51. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 56 / 81 Fluxo: Epic Feature Ao concluir o trabalho, Dev abre uma PR para a branch da epic. É realizado o Code Review
  52. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 57 / 81 Fluxo: Epic Feature Se a PR for aprovada, o(a) RM faz o merge para a branch da epic. Quando a epic estiver concluída e testada, Dev abre uma PR para Desenvolvimento
  53. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 58 / 81 Fluxo: Epic Feature Se a PR for aprovada, o(a) RM faz o merge para Desenvolvimento e Homologação e declara o início do Code Freeze.
  54. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 59 / 81 Fluxo: Epic Feature Em Homologação são realizados os testes de Regra de Negócio. Caso o trabalho seja homologado, ele é mergeado no ambiente de Homologação do Cliente
  55. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 60 / 81 Fluxo: Epic Feature Se o cliente homologar, o(a) RM lança a release a partir de Homologação...
  56. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 61 / 81 Fluxo: Epic Feature … e faz o merge para todas as branches de Homologação e Produção.
  57. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 62 / 81 Fluxo: Epic Feature … e faz o merge para todas as branches de Homologação e Produção.
  58. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 63 / 81 Fluxo: Epic Feature … e faz o merge para todas as branches de Homologação e Produção.
  59. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 64 / 81 Fluxo: Epic Feature … e faz o merge para todas as branches de Homologação e Produção.
  60. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 65 / 81 Fluxo: Epic Feature O período de Code Freeze é encerrado.
  61. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 67 / 81 Fluxo: Fix Dev cria a branch com o nome no formato fix/issue a partir de Produção e imediatamente a cria remotamente. Dev trabalha na sua branch, testa o fix localmente e faz pushes para a sua branch remota
  62. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 68 / 81 Fluxo: Fix Ao concluir o trabalho, Dev abre uma PR para Desenvolvimento. É realizado o Code Review
  63. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 69 / 81 Fluxo: Fix Se a PR for aprovada, o(a) RM faz o merge para Desenvolvimento e Homologação e declara o início do Code Freeze
  64. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 70 / 81 Fluxo: Fix Em Homologação são realizados os testes de Regra de Negócio. Caso o trabalho seja homologado, ele é mergeado no ambiente de Homologação do Cliente
  65. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 71 / 81 Fluxo: Fix Se o cliente homologar, o(a) RM lança a release a partir de Homologação...
  66. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 72 / 81 Fluxo: Fix … e faz o merge para todas as branches de Homologação e Produção.
  67. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 73 / 81 Fluxo: Fix … e faz o merge para todas as branches de Homologação e Produção.
  68. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 74 / 81 Fluxo: Fix … e faz o merge para todas as branches de Homologação e Produção.
  69. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 75 / 81 Fluxo: Fix … e faz o merge para todas as branches de Homologação e Produção.
  70. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 76 / 81 Fluxo: Fix O período de Code Freeze é encerrado.
  71. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 79 / 81 Daqui pra onde…? Variações dev
  72. galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott

    - 10/17/23 - 80 / 81 Daqui pra onde…? Variações, ou evoluindo a g-flow dev
  73. galvao.eti.br Muito Obrigado! CC Attribution-ShareAlike 3.0 Unported License by Er

    Galvão Abbott - 10/17/23 - 81 / 81 Dúvidas, Críticas, Elogios, etc…? ‘bora conversar!