superando o gitflow - drupalcamp campinas 2016
Post on 11-Apr-2017
254 Views
Preview:
TRANSCRIPT
Superando o GitFlow Workflow de git focado na entrega de valor em
outsourcingcom equipes distribuídas.
Luiz Guerraluiz.guerra@taller.net.br
Renato Reva Gomesrenato@taller.net.br
Gitflowmaster releas
edevelopment feature
1 feature 2feature 3
1.0
Gitflowmaster
releasedevelopme
nt
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
masterdevelopment
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!
top related