Se você estiver usando esta forma de branchcomando (com ponto inicial), não importa onde você HEADestá.
O que você está fazendo:
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
Primeiro, você configura seu HEADpara 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 07aeec98faz 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 masterneles 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
devbranch 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 devdiretamente, 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 devbranch 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 devregularmente.
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.