DEV Community

Danilo Silva
Danilo Silva

Posted on

1

Git Flow - Releases [pt-BR]

Vamos aprender para que servem as branches chamadas de releases e como aplicar o uso delas ao lançamento de uma versão no ambiente de produção.


Definição

Releases são branches de preparação de um novo lançamento em produção e elas permitem pequenas correções de bugs e preparação de metadados para publicação (número da versão, datas de construção, entre outras definições).

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

  • release/0.1.0

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

📌 O momento ideal para criar uma nova branch release é quando o desenvolvimento (quase) reflete o estado desejado do novo lançamento. Pelo menos todos os recursos que são direcionados para o lançamento a ser construído devem estar presentes na branch develop.

Git Flow create release in action

📝 Descrição da imagem:

Criação de uma feature a partir da develop (F - Nova feature) e no final do desenvolvimento da funcionalidade (C - Commit) é realizada a mesclagem com a develop (M - Merge).

Logo após é criada uma release (R - Nova release), onde pode haver alteração do número de versão e outras definições e por fim, a mesclagem com a branch master (M - Merge) e o código atualizado volta a ser integrado também, à develop.


Releases 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 releases

Para criar uma release é bem simples:

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

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

git flow release start 0.1.0
Enter fullscreen mode Exit fullscreen mode

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

[saída do console]                                                       
Switched to a new branch 'release/0.1.0'

Summary of actions:
- A new branch 'release/0.1.0' was created, bases on 'develop'
- You are now on branch 'release/0.1.0'

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

      git flow release finish '0.1.0' 
Enter fullscreen mode Exit fullscreen mode

2. Finalização de releases

Após terminar o preparação da aplicação para ser lançada em produção, a branch estará pronta para ser finalizada e mesclada à develop.

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

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

Para finalizar uma release, basta:

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

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

Execute:

git flow release 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:
#  0.1.0
# Lines starting with '#' will be ignored.
Enter fullscreen mode Exit fullscreen mode

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

Depois de escrever a mensagem, a release 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]                          release/0.1.0
Deleted branch release/0.1.0 (was 713d5ac).

Summary of actions:
- Release branch 'release/0.1.0' has been merged into 'master'
- The release was tagged '0.1.0'
- Release branch 'release/0.1.0' has been locally deleted; it has been remotely deleted from 'origin'
- You are now on branch 'master'
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 todos 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 releases de forma simples e rápida, é isto!!

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


Obrigado por chegar até aqui! 😄

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

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