Eu tenho minha master
filial e uma develop
filial para trabalhar em algumas alterações. Preciso mesclar alterações de master
em develop
, mas acabarei mesclando tudo de develop
em master
. Eu tenho dois fluxos de trabalho diferentes em mente:
git pull origin master
nodevelop
ramogit merge master
nodevelop
ramo
Qual é a melhor maneira de fazer isso e por quê?
git pull
=git fetch
+git merge FETCH_HEAD
Respostas:
Tenha cuidado com a rebase. Se você estiver compartilhando sua ramificação de desenvolvimento com alguém, o rebase pode fazer uma bagunça. Rebase é bom apenas para suas próprias filiais locais.
Como regra geral, se você empurrou o ramo para a origem, não use rebase. Em vez disso, use mesclagem.
fonte
git push origin rebasedBranch --force
repo privado? O único usuário sou eu mesmo.Esse fluxo de trabalho funciona melhor para mim:
... faça algumas alterações ...
... o mestre de avisos foi atualizado ...
... comprometer alterações para desenvolver ...
... trazer essas mudanças de volta ao desenvolvimento ...
... faça mais algumas alterações ...
... comprometa-os a desenvolver ...
... fundi-los em mestre ...
fonte
git pull
direita antes da finalgit merge develop
. Qual é o propósito disso?git pull --rebase origin master
no seu ramo de desenvolvimento é um pouco mais rápido.A melhor abordagem para esse tipo de coisa é provavelmente
git rebase
. Ele permite que você puxe as alterações do master para o seu ramo de desenvolvimento, mas deixe todo o seu trabalho de desenvolvimento "em cima" (posteriormente no log de confirmação) do material do master. Quando seu novo trabalho estiver concluído, a mesclagem de volta ao mestre será muito simples.fonte
develop
não seja compartilhado com mais ninguém.develop
for compartilhado com outros colaboradores, como atualizaremosdevelop
quando alguns hotfixes forem enviados diretamente paramaster
? Devemos fazer uma fusão, ou sejagit checkout master && git pull --rebase && git checkout develop && git merge master
? Deixei um comentário sobre a resposta mais votada acima, que também detalha essa preocupação.Se você não está compartilhando o branch de desenvolvimento com ninguém, então eu o refizeria toda vez que o mestre fosse atualizado, dessa forma você não terá commits de mesclagem em todo o seu histórico, uma vez que você irá mesclar o master novamente. O fluxo de trabalho nesse caso seria o seguinte:
As etapas acima garantirão que sua ramificação de desenvolvimento esteja sempre em cima das alterações mais recentes da ramificação principal. Depois de concluir o branch de desenvolvimento e ele ser refeito para as alterações mais recentes no master, basta mesclar novamente:
fonte
minha regra de ouro é:
exemplos para os mesmos nomes seriam
master
,origin/master
eotherRemote/master
.se
develop
existe apenas no repositório local e é sempre baseado em umaorigin/master
confirmação recente , você deve chamá-lomaster
e trabalhar diretamente nele. simplifica sua vida e apresenta as coisas como elas realmente são: você está desenvolvendo diretamente nomaster
ramo.se
develop
for compartilhado, não deverá ser refazidomaster
, apenas mesclado novamente--no-ff
. você está desenvolvendodevelop
.master
edevelop
têm nomes diferentes, porque queremos que sejam coisas diferentes e fiquem separados. não os faça iguaisrebase
.fonte