Git-Workflow.md
0 → 100644
| [Home](home) | [**Escopo**](escopo) | [Git Workflow](git-workflow) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [Arquitetura](arquitetura) | [Gerência](gerencia) | [Código](codigo) | [BD](Banco de Dados) | [Qualidade](qualidade) | [Frontend](frontend) | [Backend](backend) | [Analytics](analytics) | |||
| :----------: | :-------------------------------: | :------------------: | :--------------: | :--------------------------: | :--------------------: | :------------------------: | :--------------: | :---------------: | :--------------------: | :---------------: | :--------------------: | ------------: | | |||
## Sumário | |||
- [Critério de aceite](#critério-de-aceite-de-merge-requests-mr) | |||
- [GitFlow](#gitflow) | |||
- [Opções de Ferramentas](#opções-de-ferramentas) | |||
- [Comandos básicos](#comandos-b%C3%A1sicos) | |||
- [Tutoriais](#tutoriais) | |||
## Critério de aceite de Merge Requests (MR) | |||
* Branch testada | |||
* Branch atualizada com a DEV | |||
* Arquitetura Respeitada | |||
* Código Limpo | |||
* [Boas práticas atendidas](https://tools.ages.pucrs.br/) | |||
## GitFlow | |||
As atualizações da Developer serão feitos através de Pull Requests | |||
![git1](https://blog.hartleybrody.com/wp-content/uploads/2015/01/[email protected]) | |||
## Opções de Ferramentas | |||
#### GitKraken | |||
* Download do [GitKraken](https://www.gitkraken.com/download). | |||
*essa ferramenta facilita o uso do git através de uma interface intuitiva* | |||
#### GitBash (Windows) | |||
* Download do [GitBash](https://gitforwindows.org/). | |||
## Comandos básicos | |||
* clonar um repositório: | |||
`git clone ADICIONAR URL` | |||
* verificar o status do repositório: | |||
`git status` | |||
* CRIAR uma nova branch: | |||
`git checkout -b <branch desejada>` | |||
* ALTERNAR para uma branch: | |||
`git checkout <branch desejada>` | |||
* add arquivos alterados e dar um commit na branch: | |||
`git commit -a -m 'adicionei um novo rodapé [issue 53]'` | |||
* primeira vez a enviar os dados para o repositório. | |||
`git push origin <branch desejada>` | |||
* reenviar os dados para o repositório. | |||
`git push` | |||
* baixar os dados do repositório. | |||
`git pull` | |||
* fazer um merge em duas branch's. | |||
`git merge <nome da branch>` | |||
## Padrão para criação de branches | |||
As branches criadas para desenvolvimento das funcionalidades pelas squads devem seguir o padrão e de acordo com seu objetivo: | |||
Tags para os tipos de alterações: | |||
* **feat** - Nova funcionalidade | |||
* **fix** - Correção de defeito | |||
* **docs** - Alteração de documentação | |||
* **style** - Alterações visuais que não possuem alteração em codigo fonte | |||
* **refactor** - Reescrever um código para corrigir um bug ou adicionar uma nova funcionalidade | |||
* **perf** - Melhorar performance do sistema | |||
`feat/NUM_TASK-breve-descricao` | |||
Exemplo: `feat/44-cadastro-usuario` | |||
## Padrão para as mensagens de commit | |||
Os commits deverão ter um padrão em suas mensagens para facilitar o entendimento da equipe no que foi desenvolvido: | |||
`"Descrição breve do commit - Autores (caso realizado em equipe)"` | |||
Exemplo: `"Compare button done - Fulano, Ciclano"` | |||
**OBS:** Caso as atividades do commit tenham sido realizadas individualmente não é necessário informar os autores, porque a única pessoa envolvida será quem está subindo o commit. | |||
# Git Workflow | |||
- O Gitflow é um modelo alternativo de ramificação do Git que consiste no uso de ramificações de recursos (features) e várias ramificações primárias (`main` e `development`). | |||
![Fluxo_GIT](https://codigomaromba.files.wordpress.com/2019/01/gitflow-1.png) | |||
### Branches | |||
- Cada branch relacionada à features será criada a partir da branch development. Nos tópicos abaixo será explicado as nomenclatura que serão utilizadas para o desenvolvimento. | |||
#### Nomes | |||
- O nome da branch deve seguir o padrão **feature/nome-da-feature**, onde os nomes das features podem ser encontrados no Azure DevOps. Quando for necessário fazer alguma correção, o prefixo utilizado deverá ser **fix/nome-da-feature**. | |||
#### Criação | |||
- Para garantir que o processo de desenvolvimento esteja sempre atualizado, lembre-se de executar o seguinte comando na branch development antes de criar uma branch nova: | |||
``` | |||
git pull origin development | |||
``` | |||
- Depois da execução desse comando é necessário criar a Branch, para isso, execute o seguinte comando: | |||
``` | |||
git checkout -b <nomeDaBranch> | |||
``` | |||
### Commits | |||
- Após criar a sua branch de desenvolvimento, faça as alterações necessárias no código e commite as mudanças: | |||
- Para adicionar as mudanças é possível utilizar dois comandos: | |||
- O comando `git add .` , faz com que todas as alterações que foram feitas localmente sejam commitadas no repositório remoto. | |||
``` | |||
git add . | |||
``` | |||
- O comando `git add <nomeDoArquivo>` , faz com que apenas as alterações do arquivo informado seja commitado no repositório remoto. | |||
``` | |||
git add <nomeDoArquivo> | |||
``` | |||
- Após adicionar as alterações é necessário commitar elas usando o comando `git commit-m"comentario-do-commit"` | |||
``` | |||
git commit-m"comentario-do-commit" | |||
``` | |||
- O comentário deve descrever o que foi alterado no código. | |||
- Após, se for o primeiro commit dessa branch: | |||
``` | |||
git push --set-upstream origin nome-da-branch | |||
``` | |||
- Caso contrário utilize: | |||
``` | |||
git push | |||
``` | |||
**Importante**: Sempre envie seus commits para o repositório remoto após realizar o seu trabalho, assim os outros desenvolvedores terão sempre as ultimas atualizações do código. | |||
### Merge Requests | |||
- Depois da sua issue ter sido desenvolvida e estiver pronta de acordo com os critérios de aceitação, é necessário que a mesma seja enviada para a branch de development. | |||
- Antes de abrir a MR certifique-se que, não irá ocorrer conflitos da sua branch com a `development`, para isso, siga os seguintes passos: | |||
``` | |||
git checkout development | |||
git pull | |||
git checkout <nome-da-branch> | |||
git merge development | |||
``` | |||
- Resolva os conflitos caso ocorra, após resolvê-los, envie as alterações para o Gitlab: | |||
`git push` | |||
#### Criando o Merge Request | |||
- A criação pode ser realizada na seção Merge Requests do repositório em que a branch foi criada. Clicando no botão **New Merge Request** siga os seguintes passos: | |||
1. Selecionar a branch de origem (sua branch de desenvolvimento); | |||
2. Selecionar a branch de destino (branch development); | |||
3. Selecione **Compare branches and continue**; | |||
4. Em **Title**, escreva um título que descreva a funcionalidade adicionada ou bug corrigido; | |||
5. Em **Description**, escreva uma descrição com uma breve justificativa nos arquivos que foram alterados; | |||
6. Caso a tarefa seja visual (criação de componente/tela, correção de bug) adicione um gif exemplificando o uso (se considerar necessário); | |||
7. Na seção **Assignee**, marcar o responsável pela tarefa. | |||
8. Na seção **Reviwers**, marcar os AGES 3 (Eduardo Ballico, Leonardo Vargas Soares e Pedro Vieira). | |||
## Tutoriais | |||
* [basico-1](https://git-scm.com/book/pt-br/v1/Ramifica%C3%A7%C3%A3o-Branching-no-Git-B%C3%A1sico-de-Branch-e-Merge). | |||
* [basico-2](https://fjorgemota.com/git-sistema-de-controle-de-versoes-distribuido/). | |||
* [GitFlow](https://fjorgemota.com/git-flow-uma-forma-legal-de-organizar-repositorios-git/). | |||
\ No newline at end of file |