Se stai usando questa forma del branchcomando (con punto di inizio), non importa dove ti HEADtrovi.
Cosa stai facendo:
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
Per prima cosa, imposti il tuo HEADsul ramo dev,
In secondo luogo, si avvia un nuovo ramo su commit 07aeec98. Non c'è bb.txt in questo commit (secondo il tuo repository GitHub).
Se vuoi avviare un nuovo ramo nella posizione che hai appena estratto, puoi eseguire branch senza punto di partenza:
git branch test
o come altri hanno risposto, diramazione e checkout lì in un'unica operazione:
git checkout -b test
Penso che potresti essere confuso dal fatto che 07aeec98fa parte del ramo dev. È vero che questo commit è un antenato di dev, le sue modifiche sono necessarie per raggiungere l'ultimo commit in dev. Tuttavia, sono altri impegni necessari per raggiungere l'ultimo dev, e questi non sono necessariamente nella storia di 07aeec98.
8480e8ae(dove hai aggiunto bb.txt), ad esempio, non è nella cronologia di 07aeec98. Se ti dirigi da 07aeec98, non otterrai le modifiche introdotte da 8480e8ae.
In altre parole: se unisci il ramo A e il ramo B nel ramo C, quindi crei un nuovo ramo su un commit di A, non otterrai le modifiche introdotte in B.
Lo stesso qui, avevi due rami paralleli master e dev, che hai unito in dev. La ramificazione da un commit di master (precedente all'unione) non fornirà le modifiche di dev.
Se vuoi integrare in modo permanente le nuove modifiche dal master nei rami delle tue funzionalità, dovresti unirli mastere andare avanti. Tuttavia, questo creerà commit di unione nei rami delle funzionalità.
Se non hai pubblicato i tuoi caratteristica rami, si può anche rebase sul master aggiornato: git rebase master featureA. Preparati a risolvere possibili conflitti.
Se desideri un flusso di lavoro in cui puoi lavorare su rami di funzionalità senza merge commit e integrarti comunque con le modifiche più recenti nel master, ti consiglio quanto segue:
- basare ogni nuovo ramo di funzionalità su un commit di master
- creare un
devramo su un commit di master
- quando hai bisogno di vedere come il tuo ramo di funzionalità si integra con le nuove modifiche in master, unisci sia master che il ramo di funzionalità in
dev.
Non impegnarti devdirettamente, usalo solo per unire altri rami.
Ad esempio, se stai lavorando sulle funzioni A e B:
a---b---c---d---e---f---g -master
\ \
\ \-x -featureB
\
\-j---k -featureA
Unisci i rami in un devramo per verificare se funzionano bene con il nuovo master:
a---b---c---d---e---f---g -master
\ \ \
\ \ \--x'---k' -dev
\ \ / /
\ \-x---------- / -featureB
\ /
\-j---k--------------- -featureA
È possibile continuare a lavorare sui rami delle funzionalità e continuare a unire devregolarmente le nuove modifiche sia dai rami principali che da quelli delle funzionalità .
a---b---c---d---e---f---g---h---i----- -master
\ \ \ \
\ \ \--x'---k'---i'---l' -dev
\ \ / / /
\ \-x---------- / / -featureB
\ / /
\-j---k-----------------l------ -featureA
Quando è il momento di integrare le nuove funzionalità, unisci i rami delle funzionalità (non dev!) In master.