Skip to content

Latest commit

 

History

History
78 lines (57 loc) · 4.22 KB

doc-gitflow.md

File metadata and controls

78 lines (57 loc) · 4.22 KB

Fluxo de Desenvolvimento do Projeto

Nosso projeto utiliza o Git como controle de versão e o GitHub para hospedagem do repositório remoto. Também usamos o GitHub para gestão de tarefas e criação da documentação.

Fluxo de Desenvolvimento com Git

Na página com Tutorial Git e GitHub apresentamos o Fluxo de Trabalho Git com repositório local e repositório remoto no GitHub. Conforme exibido na imagem a seguir:

Fluxo de Trabalho do Git

Contudo, esse fluxo de trabalho descreve apenas as operações realizadas com Git para adição e envio das contribuições para o repositório remoto. Para uma utilização efetiva iremos utilizar um desenvolvimento baseado em multiplos branches.

Fluxo de Desenvolvimento com GitFlow

GitFlow é um modelo de desenvolvimento baseado em branches para Git, criado por Vincent Driessen. Ele atraiu muita atenção porque é muito adequado para colaboração e dimensionamento da equipe de desenvolvimento.

git-workflow-release-cycle

No nosso projeto utilizamos apenas as branches:

  • branch main: branch principal com o código integrado e verificado.
  • branch feat/issueX: branch para a feature descrita na issue de id = X.
  • branch fix/issueY: branch para a hotfix de bugs descrita na issue de id = Y.
  • branch doc/issueZ: branch para documentação do projeto, criação de tutoriais ou documentação no código, descrita na issue de id = Z.

Neste momento não estamos utilizando branches de develop e release. Concordamos com a abordagem utilizada por Paulo Moura no seu post Git-flow o anti-pattern mais querido da galera.

Passo a Passo para contribuir

  1. Faça o Fork do projeto no GitHub, se você não for membro do repositório;

  2. Faça o Clone do projeto (git clone);

git clone https://github.com/username/projeto.git`
  1. Verifique se o branch atual é o branch main (git branch) e sempre atualize o branch main antes de tudo (git pull);
git branch
git pull origin main
  1. Crie um novo branch, ou seja, uma feature branch (git checkout -b) para trabalhar em funcionalidade (feature) ou em correção de bugs (hotfix) ou em documentação (document), etc. Use a nomeclatura feat/issueXX, fix/bugYY ou doc/issueZZ. Sempre estando inicialmente no branch main;
git checkout -b feat/issueXX main
  1. Atualize a feature branch sempre que necessário, pois a branch main pode estar sendo atualizada. É uma boa prática manter a feature branch sempre atualizada;
git checkout feat/issueXX
git pull origin main

É possível usar git pull --ff-only, ou git rebase -i main (branches recentes) ou ainda git merge --no-ff main.

  1. Faça commits no branch indicando o id da issue no final da mensagem. Coloque mensagens curtas e significativas;
git commit -m "Minha mensagem curta e significativa #id"
  1. Faça push do seu branch para o repositório remoto, quando tiver resolvido a tarefa; Repita o passo 4 antes, para deixar a sua feature branch atualizada.
git push origin feat/issueXX
  1. Crie um pull request (PR) do seu branch (feat/issueXX) para o branch main no GitHub;

  2. Aguarde a revisão do pull request (PR). Caso precise de ajustes basta fazer novos commits no branch. O PR será automaticamente atualizado;

  3. Quando o PR for aprovado pelo gerente ou líder, será feito o merge do pull request;

git checkout main
git merge feat/issueXX

Obs.: Todos esses comandos pode ser feitos na IDE e outros são realizados diretamente no GitHub. Qualquer dúvida é só perguntar!!! :nerd:

Para saber mais