Eu tenho dois ramos: master e dev
Eu quero criar um "ramo de recurso " do ramo **dev***.
Actualmente no ramo de dev, eu tenho:
$ git checkout -b myfeature dev
... (algum trabalho)
$ git commit -am "blablabla"
$ git push origin myfeature
Mas, depois de visualizar os meus ramos, eu consegui:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Quero dizer que o ramo parece fundido, e eu não... não entendo porque...
O que estou a fazer de errado?
Podes explicar-me, por favor, como é que te ramificas de outro ramo e voltas para o repositório remoto para o ramo de características?
Tudo isso em um modelo de ramificação como o descrito aqui.
Se você gostou do método no link que você postou, dê uma olhada em Git Flow.
É um conjunto de scripts que ele criou para esse fluxo de trabalho.
Mas para responder à sua pergunta:
$ git checkout -b myFeature dev
Cria o ramo MyFeature fora do dev. Faz o teu trabalho e depois
$ git commit -am "Your message"
Agora funda as suas mudanças para o Dev sem um avanço rápido.
$ git checkout dev
$ git merge --no-ff myFeature
Agora empurre as mudanças para o servidor
$ git push origin dev
$ git push origin myFeature
E vais ver como queres.
Se você quiser criar uma nova filial a partir de qualquer uma das filiais existentes em Git, basta seguir as opções.
Primeira modificação/checkout para a filial de onde se quer criar uma nova filial. Por exemplo, se o usuário tiver as seguintes ramificações:
Portanto, se você quiser criar uma nova filial chamada "subfilial_de_b1" sob a filial chamada "filial1" siga os passos:
Checkout ou mudar para "filial1"
caixa de pagamento1
Agora crie o seu novo ramo chamado "subfilial_de_b1" sob o "ramo1" usando o seguinte comando.
caixa git -b subfilial_de_b1 ramo1
O acima vai criar um novo branch chamado subbranch_of_b1 sob o branch branch1 (note que branch1
no comando acima não é obrigatório já que o HEAD está apontando para ele, você pode precisar se você estiver em um branch diferente no entanto).
push the subbranch_of_b1 to remote
git push origin subbranch_of_b1
Fazer trabalhos simultâneos no ramo dev
. O que acontece é que no seu cenário o ramo de recurso avança a partir da ponta do ramo dev, mas o ramo dev não muda. É mais fácil de desenhar como uma linha reta, porque pode ser pensado como um movimento para frente. Você fez isso para apontar A no dev, e a partir daí você simplesmente continuou em um caminho paralelo. Os dois ramos não se diferenciaram realmente.
Agora, se você fizer um commit no dev, antes de fundir, você começará novamente no mesmo commit, A, mas agora as características irão para C e dev para B. Isto mostrará a divisão que você está tentando visualizar, já que os ramos agora divergiram.
*-----*Dev-------*Feature
Versus
/----*DevB
*-----*DevA
\----*FeatureC