Skip to content
Snippets Groups Projects
Commit 7d1be302 authored by Richard Fernando Heise Ferreira's avatar Richard Fernando Heise Ferreira
Browse files

Update README with git instructions

parent 9f919f36
No related branches found
No related tags found
No related merge requests found
......@@ -65,3 +65,226 @@ docker-compose up -d
```
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.
**Exemplo:**
issue-256/fix-login-form
```bash
git checkout -B issue-<número_da_issue>/<palavras-chaves>
```
#### 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.
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.
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment