Fluxo do Git
Guia de Fluxo de Trabalho
1. Selecionar uma Issue
Escolha uma issue entre as que estão atribuídas a você. Verifique as tarefas e determine qual delas será sua responsabilidade.
2. Criar uma Branch a partir da develop
Certifique-se de que a branch develop está atualizada antes de criar sua nova branch.
- Vá para a branch
develop:
git checkout develop
- Atualize a branch
developcom as últimas alterações do repositório remoto:
git pull origin develop
- Criar e mudar para uma nova branch seguindo o padrão da issue:
issue-<número_da_issue>/<palavras-chave>
📌 Por que usar esse padrão?
- Cada issue no GitLab recebe automaticamente um número único.
- Esse número deve estar presente no nome da branch para facilitar a rastreabilidade.
- As palavras-chave, separadas exclusivamente por hífens, descrevem de forma objetiva o que está sendo feito.
Exemplo:
issue-256/fix-login-form
Criação da branch:
git checkout -B issue-<número_da_issue>/<palavras-chave>
3. Desenvolver a Feature na Branch
Faça as alterações necessárias para resolver a issue. Lembre-se de fazer commits pequenos e descritivos.
- Adicione as alterações ao índice:
git add .
💡 Dica:
O comando git add -A é mais confiável que o git add ., pois o segundo refere-se somente à pasta atual e suas subpastas.
- Faça o commit das alterações:
git commit -m "breve descrição"
4. Rebase da develop para Sua Branch
Antes de finalizar o trabalho, faça um rebase para garantir que sua branch esteja atualizada com as últimas mudanças da develop e para transformar todos seus commits em um só.
- Vá para a branch
develop:
git checkout develop
- Atualize a branch
develop:
git pull origin develop
- Volte para sua branch de desenvolvimento:
git checkout nome-da-branch
💡 Dica:
O comando git checkout - volta para a última branch acessada.
- Rebase da branch em relação à
develop:
git rebase -i develop
Isso abrirá uma tela no editor com a lista de commits da sua branch, todos precedidos por "pick".
✏️ Como editar os commits?
- Mantenha
pickapenas no primeiro commit. - Altere todos os demais para
f(de fixup), consolidando-os no primeiro. - Verifique se a mensagem do primeiro commit está correta, seguindo o formato:
Issue #<número_da_issue>: <Palavra de Poder> <descrição do que foi feito, em inglês>
- Se estiver correto: basta salvar e fechar o editor.
- Se estiver errado: troque
pickparar(reword), salve e feche o editor. Um novo editor irá abrir somente com o nome do commit a ser alterado.
🔹 Palavras de Poder
Use uma das palavras abaixo para indicar a natureza da mudança:
- Add
- Change
- Deprecate
- Remove
- Fix
- Security
Essas palavras seguem o padrão Keep a Changelog.
📌 Exemplo de commit correto
Issue #256: Fix login form was not working when Enter was pressed
Conflitos durante o rebase
Caso ocorram conflitos, resolva-os e depois:
git add -A
git rebase --continue
💡 Dica: O VSCode possui uma interface que ajuda muito nessa hora!
5. Push e Merge Request (MR)
Depois de finalizar o trabalho, envie sua branch para o repositório remoto e abra um Merge Request (MR) para revisão de código.
- Envie a branch para o repositório remoto:
git push origin nome-da-branch -f
💡 Dica:
A flag -f (force) deve ser usada porque após o rebase o histórico foi reescrito.
Verifique se sua branch está com 0 commits atrás da
develope 1 commit à frente dadevelop. Isso é indicado no GitLab pela notação0|1ao lado do nome da branch.Abra o Merge Request (MR) no GitLab para revisão de código. Inclua uma descrição clara (o quê e por quê) e cite impactos (ex.: variáveis
.env, migrações).
Conclusão
Esse fluxo de trabalho:
- Mantém o histórico do Git limpo (1 commit por issue).
- Organiza as alterações de forma eficiente.
- Facilita a colaboração em equipe, revisões e criação de releases.
Este fluxo é obrigatório dentro do C3SL e não deve ser alterado sem um motivo justificado de organização de código e fluxo de trabalho.
Guia rápido para criar uma Tag de Release
Para gerar uma nova Release e disparar o CI, basta criar e enviar a tag:
git tag vX.X.X
git push origin vX.X.X
Substitua vX.X.X pela versão desejada (ex.: v1.0.0). Isso acionará os jobs de release e criação de imagens no pipeline.