Skip to content

Commit

Permalink
update post 'git flow com maestria'
Browse files Browse the repository at this point in the history
  • Loading branch information
abelaguiar authored Dec 10, 2019
1 parent d646ed2 commit f89709c
Showing 1 changed file with 46 additions and 19 deletions.
65 changes: 46 additions & 19 deletions _posts/2019-05-11-git-flow-maestria.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,24 @@ imageBanner: 01-git-flow-com-maestria.png

### Git como ferramenta essencial

Sendo bem simples, é uma ferramenta de versionamento de código que melhora a forma de trabalhar com projetos e aplicações, ajudando na interação entre os desenvolvedores, assim temos um repositório ou local que centraliza toda a aplicação e nele vamos ter inserções de linhas de código através do git, esse repositório é na verdade um servidor onde poderá centralizar seu trabalho, pode ser criado dentro de sua empresa, como explica a [documentação][git-configuracao-servidor], pode usar também através de serviços na internet como [bitbucket][bitbucket], [github][github] e [gitlab][gitlab].
Sendo bem simples, é uma ferramenta de versionamento de código que melhora a forma de trabalhar com projetos e aplicações, ajudando na interação entre os desenvolvedores, assim temos um repositório ou local que centraliza todos os arquivos da aplicação e nele vamos ter inserções de linhas de código através do git, esse repositório pode também ser um servidor diferente da sua máquina local que facilita a centralização do desenvolvimento, pode ser criado dentro de sua empresa, como explica a [documentação][git-configuracao-servidor], pode usar também através de serviços na internet como [bitbucket][bitbucket], [github][github] e [gitlab][gitlab].

[github]: https://github.com
[bitbucket]: https://bitbucket.org
[gitlab]: https://gitlab.com
[git-configuracao-servidor]: https://git-scm.com/book/pt-br/v1/Git-no-Servidor-Configurando-o-Servidor

Git é uma ferramenta criada e desenvolvida dentro do linux, sendo assim tem diversos tipos de comandos, em outros sistemas existe suporte só que limitado, onde é feito uma virtualização de uma base linux e nela o git será instalado e executado, linux é o sistema mais fácil para começa, mas fica a seu gosto.
Git é uma ferramenta criada e desenvolvida para funcionar na plataforma linux, sendo assim tem diversos tipos de comandos, em outros sistemas existe suporte de forma limitada, onde é feito uma virtualização de uma base linux e nela o git será instalado e executado, linux como plataforma nativa é mais fácil para começa, mas fica a seu gosto.

O que vamos abordar nesse post são de comandos básicos ao avançado, daí vamos do git ao git flow. As ferramentas que vamos trabalhar nesse projeto serão:
O que vamos abordar nesse post são de comandos básicos ao avançado, daí vamos do git ao git flow.

As ferramentas que vamos trabalhar nesse projeto serão:

* Linux (Fedora ou Ubunto).
* Git
* Git Flow

No seu linux e faça a [instalação do git][instalando-git], vá na pasta do projeto pelo terminal e daí vamos aos comandos básicos:
No linux faça a [instalação do git][instalando-git], vá na pasta do projeto pelo terminal e daí vamos aos comandos básicos:

[instalando-git]: https://git-scm.com/book/pt-br/v1/Primeiros-passos-Instalando-Git

Expand All @@ -41,13 +43,14 @@ No seu linux e faça a [instalação do git][instalando-git], vá na pasta do pr
git commit -m “init project”
```

Assim o git é iniciado no seu projeto e você cria sua primeira versão através do commit “init project”, agora vamos subir o projeto para um servidor onde virará um repositório:
Assim o git é iniciado no seu projeto e você cria a primeira versão através do commit “init project”. Agora vamos subir o projeto para um servidor onde virará o repositório do projeto:

```sh
git remote add origin [email protected]:{usuario}/{nomeDoProjeto}.git

git push -u origin master
```

Usando o github como servidor, adicionamos a origem, que é uma url, podendo ser um servidor na sua empresa ou um terceiro como é nosso caso. Para baixar o projeto em outras máquinas, use o comando abaixo:

```sh
Expand All @@ -58,51 +61,67 @@ Usando o github como servidor, adicionamos a origem, que é uma url, podendo ser

### Git Flow no dia a dia

Essa ferramenta seria como um PLUS para o git, atuando em como vamos tratar as tarefas e versões do código, tendo uma separação de pequenas tarefas a grande módulos, desde uma correção de bug a manutenção de partes inteiras de seu sistema. Git flow criada por [Vincent Driessen][vincent], agradeçam esse cara.
Essa ferramenta seria como um PLUS para o git, atuando no tratamento de tarefas e suas versões de código, tendo uma separação de pequenas correções a grande módulos, desde uma correção de bug a manutenção de partes inteiras de um sistema.

Git flow foi criado por [Vincent Driessen][vincent], agradeçam esse cara.

[vincent]: https://nvie.com/about

Como tratamos no começo do post sobre o básico de git e seus comandos, aqui vou explicar como usar e em que ocasições usar, pelo menos dentro da minha esperiência.
Como tratamos no começo do post sobre o básico de git, aqui vou explicar como usar e em que ocasiões usar, pelo menos dentro da minha experiência.

Para entender como funciona os tipos de abordagens do git flow, como **hotfix** e **feature**, temos que entender primeiro o que é um branch. Quando criamos um projeto e iniciamos com o git, automaticamente é criado uma branch chamada **master**, podemos enteder ela como se fosse um caminho a pecorrer e dentro dele temos as pegadas que podemos chamar de commits, esse conjunto de pegadas dentro de um caminho chamos de branch, e cada uma tem um significado, master no caso é a principal.
Para entender como funciona os tipos de abordagens do git flow, como **hotfix** e **feature**, temos que entender primeiro o que é uma branch. Quando criamos um projeto e iniciamos com o git, automaticamente é criado uma branch chamada **master**, podemos enteder ela como se fosse um caminho a pecorrer e dentro dele temos as pegadas que chamamos de commits, esse conjunto de pegadas dentro de um caminho chamos de branch, e cada uma tem um significado, master no caso é a branch principal, ou nosso código final.

Vamos iniciar a utilização, primeiro [instale o git flow][instalando-git-flow] no seu linux e na seguência entre no seu terminal, vá até a pasta do projeto onde o git já tenha sido iniciado e execulte o comando abaixo:
Vamos iniciar a utilização da ferramenta, primeiro [instale o git flow][instalando-git-flow] no linux e na seguência entre no terminal, vá até a pasta do projeto, onde o git já tenha sido iniciado e execulte o comando abaixo:

[instalando-git-flow]: https://danielkummer.github.io/git-flow-cheatsheet/index.pt_BR.html

```sh
git flow init
```

Todas as opções que aparecem ao execultar o comando devem ser aceitas.
Todas as opções que aparecem ao executar o comando de inicialização devem ser aceitas.

```sh
Which branch should be used for bringing forth production releases?
- master
Branch name for production releases: [master]
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []
```

---

#### Hotfix

Hotfix são mudanças pequenas como correção de bugs, os commits gerados dentro do hotfix vão direto para a branch MASTER quando finalizado, passando da versão de 1.0.0 para 1.0.1 através das tags.
Hotfix são mudanças pequenas como correções de bugs, os commits gerados dentro do hotfix vão direto para a branch MASTER quando finalizado, passando da versão de 1.0.0 para 1.0.1 através das tags.

```sh
git flow hotfix start <1.0.0 version>
```

Após execultar o comando, uma branch é criada do tipo hotfix com o nome informado, particulamente ao hotfix coloco o nome da versão na qual o bug vai ser corrigido. Na seguência faça as correções e no final crio um commit como o comando abaixo:
Após executar o comando, uma branch é criada do tipo hotfix com o nome informado, particulamente ao hotfix coloco o nome da versão na qual o bug vai ser corrigido. Na seguência faça as correções e no final crio um commit como o comando abaixo:

```sh
git add --all

git commit -m "update project"
```

Commit criado, finalizo o hotfix:
Depois do commit criado, finalize o hotfix:

```sh
git flow hotfix finish <1.0.0 version>
```

Finalizando o hotfix temos uma release sendo feita de forma automática, que será explicado mais a frente o que acontece nesse processo, uma nova versão é criada e envio tudo o que voi feito até mesmo a versão para o servidor do repositório.

**Observação:** sobre versões, existe um site que explica sobre [versionamento semântico][versionamento], que uma forma de organizar melhor as nomenclaturas de versões da aplicação.
**Observação:** Sobre versões, existe um site que explica sobre [versionamento semântico][versionamento], que é uma forma de organizar melhor as nomenclaturas de versões para sua aplicação.

[versionamento]: https://semver.org/lang/pt-BR/

Expand Down Expand Up @@ -130,7 +149,7 @@ Faça todas as inserções de código e crie todos os commits necessários para
git commit -m "update project"
```

Finalizo a feature com o comando abaixo:
Finalize a feature com o comando abaixo:

```sh
git flow feature finish <nome>
Expand All @@ -142,9 +161,9 @@ Próximo passo ao finalizar a feature é criar uma release.

#### Release

É a forma de alinhar todas as branch, nivelando todos os commits nas branch master e develop, como mostrei anteriormente ao criar um hotfix ou feature, uma branch é criada com o nome informado, ao finalizar a branch criada é destruida, só que após isso o processo é diferente para hotfix e feature.
É a forma de alinhar todas as branch, nivelando todos os commits nas branch master e develop, como mostrei anteriormente ao criar um hotfix ou feature, uma branch é criada com o nome informado, ao finalizar a branch é destruida, só que após isso o processo é diferente de hotfix e feature.

No hotfix, ao finaliza-lo o grupo de commits são mandadas para a MASTER e na feature é mandada para a DEVELOP, assim no primeiro caso não necessitamos de uma release, porque os dados já vão para a branch principal, na feature temos que igualar MASTER e DEVELOP, e criar uma nova versão.
Ao finalizar o hotfix, os commits criados são mandados para a MASTER e DEVELOP, criando uma TAG de versionamento com o nome do hotfix e na feature os commits vai para a DEVELOP, assim necessitando a criação de uma release para alinhar as branchs e no final a criação de uma TAG de versionamento.

```sh
git flow release start <1.0.0 version>
Expand All @@ -160,10 +179,18 @@ No hotfix, ao finaliza-lo o grupo de commits são mandadas para a MASTER e na fe

#### Finalizando

Ao finalizar todo o processo, vamos enviar os dados para o servidor, nas branch **master**, **develop** e com a **tag** criada de versionamento, subindo os commits para o servidor do repositório.
Ao finalizar todo o processo, vamos enviar os dados para algum servidor, nas branch **master**, **develop** e com a **tag** de versionamento, subindo os commits para as branchs especificadas no repositório.

```sh
git push origin master develop <1.0.0 version>
```

Obrigado a todos que leram o post até aqui, deixem suas dúvidas, sugestões de correção e comentários, estarei a disposição.
Obrigado a todos que lerem o post até aqui, deixem suas dúvidas, sugestões de correção e comentários, estarei a disposição.

#### Links de referência:

https://git-scm.com/

https://rogerdudler.github.io/git-guide/index.pt_BR.html

https://danielkummer.github.io/git-flow-cheatsheet/index.pt_BR.html

0 comments on commit f89709c

Please sign in to comment.