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! 😄

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up