DEV Community

Danilo Silva
Danilo Silva

Posted on

2

Git Flow - Hotfixes [pt-BR]

Continuando nossa jornada sobre GitFlow vamos aprender para que servem as branches chamadas de hotfixes e como aplicar o uso deles em correções urgentes em produção. 😯


Definição

Hotfixes são branches usados para resolver rapidamente as mudanças necessárias na branch principal (master). São destinados para a realização de alguma(s) correção(ões) crítica(s) encontrada(s) em produção.

Por convenção elas têm o prefixo hotfix/.
Por exemplo:

  • hotfix/1.0.1

Importante ressaltar que as hotfixes (vamos nos acostumar a chamá-lás assim) são criadas sempre à partir da branch master.

Git Flow create hotfix in action

📝 Descrição da imagem:

Após haver uma versão em produção (master), é criada uma hotfix (H - Nova hotfix) onde há correções imediatas do código a partir do branch principal e por fim, a mesclagem com a branch master (M - Merge) e o código atualizado volta a ser integrado também, à develop.


Hotfixes na prática 😎

Pré-requisitos

  • Ter o GIT instalado
  • Qualquer repositório com o fluxo do Git Flow inicializado e configurado.

1. Criação de hotfixes

Para criar uma hotfix é bem simples:

git flow hotfix start <número-versão-proposta-de-correção>
Enter fullscreen mode Exit fullscreen mode

Com um comando neste padrão, será criada uma nova branch através da develop com o prefixo hotfix/, seguido do número de versão que você inserir.
Execute:

git flow hotfix start 1.0.1
Enter fullscreen mode Exit fullscreen mode

O retorno do comando é uma nova branch entitulado hotfix/1.0.1 e já é realizado checkout nessa nova branch.

[saída do console]                                                       
Switched to a new branch 'hotfix/1.0.1'

Summary of actions:
- A new branch 'hotfix/1.0.1' was created, bases on 'master'
- You are now on branch 'hotfix/1.0.1'

Follow-up actions:
- Bump the version number now!
- Start commtting last-minute in preparing your hotfix
- When done, run:

      git flow hotfix finish '1.0.1' 
Enter fullscreen mode Exit fullscreen mode

2. Finalização de hotfixes

Após finalizar as correções urgentes no código que está em produção, a branch estará pronta para ser finalizada e mesclada tanto na master quanto na develop.

Então você verificou que está na hotfix, não há nenhum commit a ser feito e nenhum arquivo pendente...

git checkout hotfix/1.0.1
git status
Enter fullscreen mode Exit fullscreen mode
[saída do console]                         
No ramo hotfix/1.0.1              
nothing to commit, working tree clean
Enter fullscreen mode Exit fullscreen mode

Para finalizar uma hotfix, basta:

git flow hotfix finish <número-versão-proposta>
Enter fullscreen mode Exit fullscreen mode

O número da versão da hotfix é opcional quando você já está presente(checkout) nela.

Execute:

git flow hotfix finish
Enter fullscreen mode Exit fullscreen mode

Após esta instruçao, aparecerá a possibilidade de escrever uma mensagem que descreverá a versão lançada (nota de versão).


#
# Write a message for tag:
#  1.0.1
# Lines starting with '#' will be ignored.
Enter fullscreen mode Exit fullscreen mode

⚠️ A finalização de uma hotfix marca a criação de uma tag correspondente ao número de versão entitulado na branch hotfix.

Depois de escrever a mensagem, a hotfix será meclada(merge) à master E à develop, em seguida deletada tanto localmente como remotamente.

Switched to branch 'master'
Your branch is up to date with 'origin/master'.
To <url-repositorito-remoto>
 -  [deleted]                          hotfix/1.0.1
Deleted branch hotfix/1.0.1 (was 713d5ac).

Summary of actions:
- Hotfix branch 'hotfix/1.0.1' has been merged into 'master'
- The hotfix was tagged '1.0.1'
- Hotfix branch 'hotfix/1.0.1' has been locally deleted
- You are now on branch 'develop'
Enter fullscreen mode Exit fullscreen mode

Considerações finais

Para garantir que o repositório remoto estará atualizado baseando no status da sua estação de trabalho local, execute os comandos abaixo:

EMPURRE (push) as atualizações de todas as branches

  git push --all
Enter fullscreen mode Exit fullscreen mode

SUBA (push) a tag recentemente criada

  git push --tags
Enter fullscreen mode Exit fullscreen mode

Pronto, para trabalhar com hotfixes de forma simples e rápida, é isto!!

⚡ Nesta seção sobre Git Flow você encontrará explicações e usos práticos sobre features, releases, tags e muito mais.


Obrigado por chegar até aqui! 😄

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Eliminate Context Switching and Maximize Productivity

Pieces.app

Pieces Copilot is your personalized workflow assistant, working alongside your favorite apps. Ask questions about entire repositories, generate contextualized code, save and reuse useful snippets, and streamline your development process.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay