... | ... | @@ -7,9 +7,10 @@ O projeto é divido em 3 repositórios: |
|
|
* [nutritechWiki](http://www.tools.ages.pucrs.br/gastronomia/nutritechWiki): repositório da wiki deste projeto (você está aqui 😄);
|
|
|
* [nutritechFront](http://www.tools.ages.pucrs.br/gastronomia/nutritechFront): desenvolvimento do front end;
|
|
|
* [nutritechAPI](http://www.tools.ages.pucrs.br/gastronomia/nutritechAPI): desenvolvimento da REST API;
|
|
|
<br >
|
|
|
<br ><br >
|
|
|
|
|
|
# Setup do git
|
|
|
|
|
|
- Notebook da AGES
|
|
|
|
|
|
Os computadores da AGES já vem com git instalado, portanto, basta [clonar](#clonar) o repositório desejado.
|
... | ... | @@ -17,19 +18,19 @@ Os computadores da AGES já vem com git instalado, portanto, basta [clonar](#clo |
|
|
- Notebook pessoal
|
|
|
|
|
|
Se você estiver com seu computador pessoal, instale o [GitBash](https://git-scm.com/download/win) e tudo ~~deve~~ vai funcionar.
|
|
|
<br ><br >
|
|
|
|
|
|
# Tutorial de Git (Got 15 minutes and want to learn Git?)
|
|
|
Mini tutorial do GitHub ensinando os básicos para a utilização do Git Bash ou terminal do linux, tutorial direto no browser.
|
|
|
https://try.github.io/levels/1/challenges/1
|
|
|
|
|
|
|
|
|
<br ><br >
|
|
|
|
|
|
# [A simple git branching model](https://gist.github.com/jbenet/ee6c9ac48068889b0912)
|
|
|
|
|
|
Neste projeto usaremos "A simple git branching model" como gitflow, como o nome indica é um flow bastente simples, entretanto funciona muito bem.
|
|
|
|
|
|
O nosso gitflow consiste em criar branchs de features para desenvolver novas features e branchs de fix. Estar branchs serão eventualmente combinadas à branch dev
|
|
|
Todos nossos merges serão feitos na branch _dev_ e a cada entrega os arquitetos da equipe a integrarão à branch _homo_
|
|
|
O nosso gitflow consiste em criar branchs de features para desenvolver novas features e branchs de fix. Estar branchs serão eventualmente combinadas à branch dev. <br >
|
|
|
Todos nossos merges serão feitos na branch _dev_ e a cada entrega os arquitetos da equipe a integrarão à branch _homo_.
|
|
|
|
|
|
Passos detalhados do nosso fluxo utilizando o GIT bash:
|
|
|
|
... | ... | @@ -39,55 +40,96 @@ Antes de qualquer coisa precisamos clonar o repositório para isso vamos ao repo |
|
|
>`git clone <REP_URL>`
|
|
|
|
|
|
Para clonar o repositório do front-end, por exemplo, utilizamos o seguinte comando:
|
|
|
>`git clone -b dev http://www.tools.ages.pucrs.br/gastronomia/nutritechFront`
|
|
|
Note que utilizamos "-b dev" este parâmetro faz com que clonemos o projeto na branch _dev_
|
|
|
>`git clone -b dev http://www.tools.ages.pucrs.br/gastronomia/nutritechFront` <br >
|
|
|
(Note que utilizamos "-b dev", este parâmetro faz com que clonemos o projeto na branch _dev_)
|
|
|
|
|
|
## Começando a desenvolver uma task
|
|
|
|
|
|
Bom, agora temos nosso repositório, antes de começarmos a trabalhar precisamos garantir que estamos na branch correta e estamos com a versão mais atual do projeto. Para isso usaremos os seguintes comandos:
|
|
|
|
|
|
## Começando a trabalhar em uma task
|
|
|
>`git fetch` <br >
|
|
|
(Este comando irá atualizar o remoto)
|
|
|
|
|
|
Trocar para a branch da task
|
|
|
>`git branch <US_BRANCH>`
|
|
|
>`git checkout dev` <br >
|
|
|
(Este comando vai fazer com que mudemos para a branch dev)
|
|
|
|
|
|
>`git pull` <br >
|
|
|
(Caso a versão local da _branch_ esteja desatualizada este comando irá aplicar as alterações novas)
|
|
|
|
|
|
Resgatar a versão mais recente da branch
|
|
|
>`git pull`
|
|
|
|
|
|
Neste momento temos o repositório atualizado então vamos começar a trabalhar em uma nova feature, para isso criaremos uma branch de feature com este comando:
|
|
|
|
|
|
Sair codando!
|
|
|
>`git checkout -b feature/<TASK_NAME>` <br>
|
|
|
(Note que TASK_NAME seria o nome da feature que você irá desenvolver)
|
|
|
|
|
|
Agora estamos prontos para começar a _codar_. Yay! 🤓
|
|
|
Para que nosso flow funcione muito bem usaremos [commits atômicos](https://en.wikipedia.org/wiki/Atomic_commit#Atomic_Commit_Convention) e incrementais, ou seja, criaremos um commit para cada vez que tenhamos uma mudança funcional no código.
|
|
|
|
|
|
## Salvando suas alterações
|
|
|
Visualizar quais arquivos foram alterados
|
|
|
>`git status`
|
|
|
O fluxo para criar commits é o seguinte:
|
|
|
|
|
|
>`git status` <br >
|
|
|
(Para visualizar quais arquivos foram alterados)
|
|
|
|
|
|
Adicionar os arquivos com as suas alterações
|
|
|
>###### Para adicionar um arquivo específico
|
|
|
>`git add <FILE_PATH>`
|
|
|
>###### Para adicionar todos os arquivos alterados
|
|
|
>`git add .`
|
|
|
Agora podemos adicionar apenas os arquivos que desejamos ao commit, ou adicionar todos.
|
|
|
|
|
|
>`git add <FILE_PATH>` <br >
|
|
|
(Para adicionar um arquivo específico)
|
|
|
|
|
|
>`git add .` <br >
|
|
|
(Para adicionar todos os arquivos alterados)
|
|
|
|
|
|
Criar um commit com as suas alterações
|
|
|
>`git commit -m "<COMMIT_MESSAGE>"`
|
|
|
|
|
|
Ufa! Terminamos nosso trabalho de desenvolvimento, mas e agora?! No nosso projeto não utilizamos <strike>pull</strike> merge request para com a branch de desenvolvimento, isto significa que todos nós somos responsáveis por lidar com merges. Para isso realizaremos os seguintes passos:
|
|
|
|
|
|
Primeiramente vamos enviar pro remoto a nossa branch:
|
|
|
>`git push origin feature/<TASK_NAME>`
|
|
|
|
|
|
Agora que temos a branch no remoto iremos passar para a branch de dev e garantir que ela está atualizada, pois como existem outras pessoas no projeto existe a possibilidade da nossa dev já ter novos *commits*.
|
|
|
|
|
|
Atualizar a branch para buscar commits recentes
|
|
|
>`git pull`
|
|
|
>`git checkout dev` <br >
|
|
|
(Troca para a branch dev)
|
|
|
|
|
|
>`git fetch` <br >
|
|
|
(Atualiza o remoto)
|
|
|
|
|
|
Rezar para não ter conflitos
|
|
|
~~`git pray`~~
|
|
|
>`git pull` <br >
|
|
|
(Aplica as novas atualizações na dev)
|
|
|
|
|
|
|
|
|
Se tiver conflitos:
|
|
|
>Resolver conflitos usando o Eclipse ou sua ferramenta de preferência.
|
|
|
Neste momento estamos com nossa dev atualizada, o próximo passo é aplicar os novos commits da dev na nossa branch antes de realizar o merge para a dev:
|
|
|
|
|
|
>`git checkout feature/<TASK_NAME>` <br >
|
|
|
(Para voltar à nossa branch de feature)
|
|
|
|
|
|
>`git rebase dev` <br >
|
|
|
(Este comando aplica as alterações novas na nossa branch)
|
|
|
|
|
|
Com o rebase, podem ser que existam problemas de merge, então você deve terminar resolver os [conflitos](conflito) e aplicar utilizando *git rebase --continue*
|
|
|
|
|
|
Se tudo der certo com o rebase estamos prontos para aplicar o merge na branch de dev.
|
|
|
|
|
|
>`git checkout dev` <br >
|
|
|
>`git merge feature/<TASK_NAME> --no-ff` <br >
|
|
|
(Note que usamos o parâmetro --no-ff ele serve para que o merge mantenha o tracking da branch que foi unida com a dev)
|
|
|
|
|
|
Feito isso, *idealmente* testamos todo o sistema pra ver se nada foi quebrado nos merges e se tudo estiver ok iremos subir a nova versão para o remoto com o seguinte comando:
|
|
|
|
|
|
>`git push origin dev`
|
|
|
|
|
|
<a name="conflito"></a>
|
|
|
Se houverem conflitos:
|
|
|
>Resolver conflitos usando o Visual Studio Code ou sua ferramenta de preferência.
|
|
|
>Adicionar arquivos conflitantes corrigidos
|
|
|
>`git add <FILE_PATH>`
|
|
|
>Criar um commit de merge
|
|
|
>`git commit -m "Merge commit"`
|
|
|
>Dar git rebase --continue
|
|
|
>Repetir esses passos até que todos os conflitos sejam resolvidos
|
|
|
|
|
|
|
|
|
Não tenha medo de usar o git e também não hesite em pedir ajuda à algum colega de projeto, lembre que todos já passamos por alguns <strike>vários</strike> problemas de git e todos aqui estamos trabalhando por um propósito em comum, o [autor desta página](https://www.facebook.com/ghpaul) se coloca a disposição para qualquer dúvida.
|
|
|
|
|
|
Enviar suas alterações para o repositório remoto
|
|
|
>`git push`
|
|
|
|
|
|
|
|
|
|
... | ... | |