Git - Fluxo do Versionamento adotado

22
Fluxo de Versionamento William Lima Avanti Agência Digital

description

Pequena Apresentação do Modelo de Fluxo de Utilização adotado. Overview de baixa complexidade para indicar todos os estagios e forma de versionar adotada.

Transcript of Git - Fluxo do Versionamento adotado

Page 1: Git - Fluxo do Versionamento adotado

Fluxo de Versionamento

William LimaAvanti Agência Digital

Page 2: Git - Fluxo do Versionamento adotado

Sistema de Controle de

Versão

• Controle de histórico

• Trabalho em equipe

• Marcação e resgate de versões estáveis

• Ramificação do Projeto

Page 3: Git - Fluxo do Versionamento adotado

Por que Git?• Distribuído

• Um clone “completo” vai para a maquina do desenvolvedor.

• Versionamento local.

• Modelo de Branch.

• Fácil: checkout -b <nomeDoBanchFeature>

• Conveniente: Tente, crie, comite, descarte, volte atrás.

• Pequeno e Rápido.

• Processos Locais.

• Confiabilidade.

• Efetivo.

Page 4: Git - Fluxo do Versionamento adotado

Benchmarking

Não acho justo, mas também é um ponto a se analisar.

Page 5: Git - Fluxo do Versionamento adotado

Free e Open Source

• GPLv2

• Free, e melhor…

• Free para sempre.

Page 6: Git - Fluxo do Versionamento adotado

–Linus Torvalds (criador do Linux e Git)

“O software é como sexo, é melhor quando é

livre.”

Page 7: Git - Fluxo do Versionamento adotado

Funções Básicas$git init

Transforma o diretório atual em repositório git.

$git init <dir>

Cria um diretório <dir> e transforma em repositório

git.

$git clone <repo.git>

Clona o repositório para maquina local

$git clone <repo.git> <dir>

Clona o repositório para maquina o diretório <dir>

Realiza o commit com a mensagem

$git status

Lista arquivos que não estão na área transitória, e

os arquivos que não estão sendo rastreados.

$git add <arquivo|dir>

adiciona as mudanças do arquivo | diretório

$git reset <arquivo>

Remove as mudanças do arquivo

$git commit -m ‘<msg>'

Realiza o commit com a mensagem

git blame <arquivo>

Exibe quem modificou cada linha do arquivo

<arquivo>, incluindo a data e commit.

$git diff <commit>

Exibe a diferença nos arquivos entre o commit

<commit> e o diretório local

Page 8: Git - Fluxo do Versionamento adotado

Fluxo GitAgora é para complicar!

Page 9: Git - Fluxo do Versionamento adotado

Fluxo Git

• Ramificações (Branchs) Principais:

• Master

• Desenvolvimento

• Ramificações de Auxiliares

• Feature

• Release

• Hot-fix

Page 10: Git - Fluxo do Versionamento adotado
Page 11: Git - Fluxo do Versionamento adotado

Fluxo Git

main branches

Ramificações Principais

• MASTER: é o código fonte

principal, deve refletir o que

está em produção atualmente.

• DEVELOP: refere-se as

últimas mudanças para o

próximo release.

Page 12: Git - Fluxo do Versionamento adotado

Fluxo Git

support branches

Ramificações Auxiliares

FEATURE

• Utilizada para novos recursos ou

releases distantes.

• Normalmente saem de um brach

de desenvolvimento.

• Deve ser feito fundido de volta ao

branch de desenvolvimento.

• Convenção de nome do branch:

<desenvolvedor>-<feature>

william-galeria

Page 13: Git - Fluxo do Versionamento adotado

Fluxo Git

support branches

Ramificações Auxiliares

RELEASE

• Prepara o versionamento para

produção (número da versão,

etc).

• Origem natural: DEVELOP

• Enviadados para MASTER e

DEVELOP

• Convenção de nome do branch:

release-*

release-1.0

Page 14: Git - Fluxo do Versionamento adotado

Fluxo Git

support branches

Ramificações Auxiliares

HOT-FIX

• Quando é necessário fazer uma

correção imediata. Bug Crítico.

• SEMPRE deve ter sua origem na

versão que está em produção

atualmente.

• Deve enviar suas correções para

MASTER e DEVELOP

• Convenção de nome do branch:

hotfix-*

hotfix-1.2.1

Page 15: Git - Fluxo do Versionamento adotado
Page 16: Git - Fluxo do Versionamento adotado

Feature. Como?$ git checkout -b myfeature develop

Switched to a new branch “myfeature”

• >>>> Faço o que tem fazer

$ git checkout develop

Switched to branch 'develop'

$ git merge --no-ff myfeature

Updating ea1b82a..05e9557

(Summary of changes)

$ git branch -d myfeature

Deleted branch myfeature (was 05e9557).

$ git push origin develop

Page 17: Git - Fluxo do Versionamento adotado

--no-ff

• Esta flag gera mais um commit

no merge.

• Sem ela é impossível

acompanhar a origem das

mudanças (de qual branch

saiu).

• Sem ela você precisa ler todo

o log para acompanhar de

onde cada mudança se

originou.

Page 18: Git - Fluxo do Versionamento adotado

Release. Como?

$ git checkout -b release-1.2 develop

Switched to a new branch "release-1.2"

Modifique manualmente os arquivos README, RELEASE,

NOTES, ETC.

$ git commit -a -m "Bumped version number to 1.2"

[release-1.2 74d9424] Bumped version number to

1.2

1 files changed, 1 insertions(+), 1 deletions(-)

Page 19: Git - Fluxo do Versionamento adotado

Fechando o Release. Como?Você precisa passar as modificações para o branch principal, o master, e colocar uma tag nesta versão.

$ git checkout master

Switched to branch 'master'

$ git merge --no-ff release-1.2

Merge made by recursive.

(Summary of changes)

Você precisa também garantir que o branch develop seja atualizado com as informações.

$ git tag -a 1.2

git checkout develop

Switched to branch 'develop'

$ git merge --no-ff release-1.2

Merge made by recursive.

(Summary of changes)

Agora você deve com calma resolver os conflitos de merge.

Por último excluir o branch release.

$ git branch -d release-1.2

Deleted branch release-1.2 (was ff452fe).

Page 20: Git - Fluxo do Versionamento adotado

Hot-Fix. Como?$ git checkout -b hotfix-1.2.1 master

Switched to a new branch "hotfix-1.2.1"

Modifique manualmente os arquivos README, RELEASE, NOTES, ETC.

$ git commit -a -m "Bumped version number to 1.2.1"

[hotfix-1.2.1 41e61bb] Bumped version number to 1.2.1

1 files changed, 1 insertions(+), 1 deletions(-)

Corrija o bug e faça commit.

$ git commit -m "Fixed severe production problem"

[hotfix-1.2.1 abbe5d6] Fixed severe production problem

5 files changed, 32 insertions(+), 17 deletions(-)

Page 21: Git - Fluxo do Versionamento adotado

Fechando Hot-Fix. Como?Você precisa passar as modificações para o branch principal, o master, e colocar uma tag nesta versão.

$ git checkout master

Switched to branch 'master'

$ git merge --no-ff hotfix-1.2.1

Merge made by recursive.

(Summary of changes)

$ git tag -a 1.2.1

Você precisa também garantir que o branch develop seja atualizado com as informações.

$ git checkout develop

Switched to branch 'develop'

$ git merge --no-ff hotfix-1.2.1

Merge made by recursive.

(Summary of changes)

Agora você deve com calma resolver os conflitos de merge.

Por último excluir o branch release.

git branch -d hotfix-1.2.1

Deleted branch hotfix-1.2.1 (was abbe5d6).

Page 22: Git - Fluxo do Versionamento adotado

Referências• http://nvie.com/posts/a-successful-git-branching-model/

• https://www.atlassian.com/git/workflows#!workflow-gitflow

• http://learn.github.com/p/tagging.html

• http://git-scm.com/

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

• http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks

• http://www.javaworld.com/article/2113465/developer-tools-ideit-

smart-20-essential-tips-for-/developer-tools-ide/git-smart-20-

essential-tips-for-git-and-github-users.html