Drupal camp campinas 2016 superando o gitflow (luiz henrique guerra)

51
Superando o GitFlow Workflow de git focado na entrega de valor em outsourcing com equipes distribuídas. Luiz Guerra [email protected] Renato Reva Gomes [email protected]

Transcript of Drupal camp campinas 2016 superando o gitflow (luiz henrique guerra)

Superando o GitFlow Workflow de git focado na entrega de valor em outsourcing

com equipes distribuídas.

Luiz [email protected]

Renato Reva [email protected]

Gitflow

master

release

development

feature 1

feature 2

feature 3

1.0

Gitflow

master

release

development

1.0

hotfix

1.1

Contexto de Trabalho /Necessidades

● Equipe distribuída

● Equipe distribuída

● Fluxo contínuo/kanban

● Equipe distribuída

● Fluxo contínuo/kanban

● CI&CD

● Equipe distribuída

● Fluxo contínuo/kanban

● CI&CD

● Independência entre features

● Equipe distribuída

● Fluxo contínuo/kanban

● CI&CD

● Independência entre features

● Feedback constante

ProblemasEnfrentados

● Conflitos inesperados

● Conflitos inesperados

● Imprevisibilidade na integração

● Conflitos inesperados

● Imprevisibilidade na integração

● Dificuldade em entregar demandas isoladas

● Conflitos inesperados

● Imprevisibilidade na integração

● Dificuldade em entregar demandas isoladas

● Complexidade da árvore

tig

● Conflitos inesperados

● Imprevisibilidade na integração

● Dificuldade em entregar demandas isoladas

● Complexidade da árvore

● Merge commit

M

EstratégiasAdotadas

● Criar branches a partir do branch master

git checkout -b MY-FEATURE

master

development

feature

● Criar branches a partir do branch master

● Branch auxiliar

git checkout -b MY-FEATURE-dev

● Criar branches a partir do branch master

● Branch auxiliar

● Rebase antes de fazer merge

git fetchgit rebase origin/dev

● Criar branches a partir do branch master

● Branch auxiliar

● Rebase antes de fazer merge

● Reset em relação ao origin branch

git checkout devgit reset --hard origin/devgit merge MY-FEATURE-dev

● Criar branches a partir do branch master

● Branch auxiliar

● Rebase antes de fazer merge

● Reset em relação ao origin branch

● Atualização constante com relação ao branch master

git fetchgit rebase origin/mastergit push origin MY-FEATURE -f

Dicas e BoasPráticas

● Voltar o comando

git reflog

git reset --hard HEAD@{1}

● Voltar o comando

● Resolução de conflito sem abrir o arquivo

git checkout [--ours || --theirs]

git add -ugit rebase [--continue || --skip]

● Voltar o comando

● Resolução de conflito sem abrir o arquivo

● Resetar branches de integração

git reset --hard origin/master

● Voltar o comando

● Resolução de conflito sem abrir o arquivo

● Resetar branches de integração

● Evitar resolução repetida de conflitos

rerere

rerereReuse Recorded Resolution

git config --global rerere.enabled true

● Voltar o comando

● Resolução de conflito sem abrir o arquivo

● Resetar branches de integração

● Evitar resolução repetida de conflitos

● Pull com rebase

git pull --rebase

git config --global pull.rebase true

Muito obrigado!