Isso criará um ambiente pronto para desenvolvimento, permitindo iniciar a implementação do backend imediatamente.
## Fluxo do git
Este documento descreve o fluxo de trabalho recomendando para gerenciar branches e commits em um projeto usando Git.
### Passos
#### 1. Pegar a Issue
Decida qual issue você irá trabalhar. Verifique as tarefas e determine qual delas você será responsável.
#### 2. Criar uma Branch a partir da `develop`
Certifique-se de que a branch `develop` está atualizada antes de criar sua nova branch.
1. Vá para a branch `develop`:
```bash
git checkout develop
```
2. Atualize a branch `develop` com as últimas alterações do repositório remoto:
```bash
git pull origin develop
```
3. Criar e mudar para uma nova branch seguindo o padrão da issue
Ao iniciar o desenvolvimento, crie uma nova branch nomeada conforme o padrão abaixo:
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, são de escolha pessoal, mas devem descrever de forma objetiva o que está sendo feito. Isso permite que, à primeira vista, qualquer pessoa entenda o propósito da branch.
Faça as alterações necessárias para resolver a issue. Lembre-se de fazer commits pequenos e descritivos.
1. Adicione as alterações ao índice:
```bash
git add .
```
> **💡 Dica:**
> O comando ```git add -A``` é mais confiável que o ```git add .```, pois o segundo refere-se somente a pasta atual e suas subpastas.
2. Faça o commit das alterações:
```bash
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ó, facilitando o entendimento do histórico de commits.
1. Vá para a branch `develop`:
```bash
git checkout develop
```
2. Atualize a branch `develop`:
```bash
git pull origin develop
```
3. Volte para sua branch de desenvolvimento:
```bash
git checkout nome-da-branch
```
> **💡 Dica:**
> O comando ```git checkout -``` volta para a última branch acessada. Isso pode facilitar a navegação.
4. Rebase da branch em relação à `develop`
Antes de incorporar alterações da `develop`, primeiro consolidamos nossos commits em um único, sem puxar mudanças (ou possíveis conflitos). Para isso, execute:
```bash
git rebase -i develop --keep-base
```
Isso abrirá uma tela no seu editor com a lista de commits da sua branch, todos precedidos por `"pick"`.
✏️ Como editar os commits?
1.**Mantenha "pick" apenas no primeiro commit.**
2.**Altere todos os demais para "f"** (de `fixup`), consolidando-os no primeiro.
3.**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>`
- 3.1. **Se estiver correto**: Basta salvar e fechar seu editor.
- 3.2. **Se estiver errado**: troque "pick" para "r" (de rename), salve e feche o editor. Um novo editor irá abrir somente com o nome do commit a ser alterado. Efetivamente transformando todos os commits em um só.
##### 🔹 Palavras de Poder
Use uma das palavras-chave abaixo para indicar a natureza da mudança:
-`Add`
-`Change`
-`Deprecate`
-`Remove`
-`Fix`
-`Security`
Essas palavras seguem o padrão [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
##### 📌 Exemplo de commit correto:
`Issue #256: FIX form login was not working when Enter was pressed`
5. Caso ocorram conflitos, resolva-os. Após resolver, use:
```bash
git add -A
git rebase --continue
```
> **💡 Dica:**
> O VSCode possui uma interface que ajuda muito nessa hora!
6. Execute o comando que efetivamente puxará as atualizações da `develop`:
```bash
git rebase -i develop
```
Se o passo 5 foi executado corretamente, aqui basta salvar a tela que abrirá do seu editor. Se houverem conflitos, resolva-os, senão, a mensagem de `Successfully rebased and updated` aparecerá.
Como uma possível referência do processo, [este link](https://adamj.eu/tech/2022/03/25/how-to-squash-and-rebase-a-git-branch/) pode ser útil.
#### 7. Push e Pull Request (PR)
Depois de finalizar o trabalho, envie sua branch para o repositório remoto e abra um Merge Request (MR, também chamado de Pull Request pelo github) para revisão de código.
1. Envie a branch para o repositório remoto:
```bash
git push origin nome-da-branch -f
```
> **💡 Dica:**
>A flag '-f' vem de "force" e deve ser usada para informar o git que você sabe o que está fazendo, pois com o rebase os commits estarão fora de sincronia.
Verifique se sua branch está com 0 commits atrás da develop e 1 commit na frente da develop, isso é indicado na aba "branchs" do gitlab pela notação `0|1` ao lado do nome da sua branch.
2. Abra um Merge Request (MR) no repositório remoto para revisão de código.
---
Esse fluxo de trabalho ajuda a manter o histórico do Git limpo, organiza as alterações de forma eficiente e facilita a colaboração em equipe. Esse fluxo é **obrigatório** dentro do C3SL e não deve ser alterado sem existir motivo maior de organização de código e fluxo de trabalho.