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.
merge the feature branches (not dev!) into master
?dev
ramo. Você deve manter os recursos de seus branches específicos.dev
contém apenas commits de mesclagem. Faz mais sentido mesclar todos os novos recursos diretamente domaster
que mesclar os recursos e depois mesclar o resultado emmaster
.dev
com apenas recursosA
B
e mesclarC
nelemaster
é idêntico a mesclarA
B
eC
em individualmentemaster
. Se não, isso desafia meu entendimento de como o git funciona e eu ficaria muito curioso para saber o porquê!Você tem os argumentos na ordem errada:
e para isso, não importa qual branch é verificado; vai fazer o que você diz. (Se você omitir o argumento commit, o padrão é criar um branch no mesmo lugar do atual.)
Se você deseja verificar o novo branch à medida que o cria:
com o mesmo comportamento se você omitir o argumento commit.
fonte
Você pode fazer isso localmente, já que todos mencionaram usando
Como alternativa, você pode fazer isso no próprio github, siga as etapas:
1- No repositório, clique em
Commits
.2- no commit do qual você deseja ramificar, clique em
<>
para navegar no repositório neste ponto da história.3- Clique em
tree: xxxxxx
no canto superior esquerdo. Basta digitar um novo nome de branch e clicarCreate branch xxx
conforme mostrado abaixo.Agora você pode obter as alterações desse branch localmente e continuar a partir daí.
fonte
Experimentar
O commit deve existir apenas uma vez em sua árvore, não em dois ramos separados.
Isso permite que você verifique aquele commit específico e nomeie como quiser.
fonte
gitk
visualizar seu registroVocê tem que fazer:
(você estava trocando o nome do branch e o commit)
Ou você pode fazer:
Se no lugar de você usar o nome do ramo, você obterá um ramo da ponta do ramo.
fonte
HEAD
significa. Você poderia dizer "a ponta do galho" ou "o commit para o qual o galho aponta".