Se você estiver usando esta forma de branch
comando (com ponto inicial), não importa onde você HEAD
está.
O que você está fazendo:
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
Primeiro, você configura seu HEAD
para o branch dev
,
Segundo, você inicia um novo branch no commit 07aeec98
. Não há bb.txt neste commit (de acordo com seu repositório github).
Se você deseja iniciar um novo branch no local que acabou de verificar, você pode executar o branch sem ponto de partida:
git branch test
ou como outro respondeu, ramifique e faça checkout lá em uma operação:
git checkout -b test
Acho que você pode ficar confuso com o fato de que 07aeec98
faz parte do ramo dev
. É verdade que este commit é um ancestral de dev
, suas mudanças são necessárias para alcançar o último commit em dev
. No entanto, eles são outros commits necessários para atingir o último dev
, e não estão necessariamente na história do 07aeec98
.
8480e8ae
(onde você adicionou bb.txt), por exemplo, não está na história de 07aeec98
. Se você ramificar de 07aeec98
, não obterá as alterações introduzidas por 8480e8ae
.
Em outras palavras: se você mesclar o branch A e o branch B no branch C e, em seguida, criar um novo branch em um commit de A, você não obterá as alterações introduzidas em B.
O mesmo aqui, você tinha duas ramificações paralelas master e dev, que você fundiu em dev. Ramificar a partir de um commit do master (mais antigo que o merge) não fornecerá as mudanças de dev.
Se você deseja integrar permanentemente novas mudanças do master em seus branches de recursos, você deve fundir master
neles e continuar. Isso criará commits de mesclagem em seus branches de recursos, no entanto.
Se você ainda não publicou seus ramos de novos recursos, você também pode rebase-los no mestre actualização: git rebase master featureA
. Esteja preparado para resolver possíveis conflitos.
Se você deseja um fluxo de trabalho onde pode trabalhar em branches de recursos sem mesclar commits e ainda integrar com mudanças mais recentes no master, recomendo o seguinte:
- baseie cada novo branch de recurso em um commit do master
- criar um
dev
branch em um commit do master
- quando você precisar ver como seu branch de recurso se integra com as novas mudanças no master, mescle o master e o branch de recurso em
dev
.
Não se comprometa dev
diretamente, use-o apenas para mesclar outros ramos.
Por exemplo, se você estiver trabalhando nos recursos A e B:
a---b---c---d---e---f---g -master
\ \
\ \-x -featureB
\
\-j---k -featureA
Mescle branches em um dev
branch para verificar se funcionam bem com o novo master:
a---b---c---d---e---f---g -master
\ \ \
\ \ \--x'---k' -dev
\ \ / /
\ \-x---------- / -featureB
\ /
\-j---k--------------- -featureA
Você pode continuar trabalhando em suas ramificações de recursos e continuar mesclando as novas alterações das ramificações mestre e de recursos dev
regularmente.
a---b---c---d---e---f---g---h---i----- -master
\ \ \ \
\ \ \--x'---k'---i'---l' -dev
\ \ / / /
\ \-x---------- / / -featureB
\ / /
\-j---k-----------------l------ -featureA
Quando for a hora de integrar os novos recursos, mescle os ramos do recurso (não dev
!) No mestre.