Si vous utilisez cette forme de l branch
(avec le point de départ), l'endroit où se situe votre HEAD
est.
Ce que vous faites :
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
-
Tout d'abord, vous définissez votre HEAD
à la branche dev
,
-
Ensuite, vous démarrez une nouvelle branche sur le commit 07aeec98
. Il n'y a pas de bb.txt à ce commit (selon votre repo github).
Si vous souhaitez créer une nouvelle branche à l'endroit que vous venez de quitter, vous pouvez soit exécuter une branche sans point de départ :
git branch test
ou, comme d'autres l'ont répondu, de se brancher et d'aller à la caisse en une seule opération :
git checkout -b test
Je pense que vous pourriez être confus par le fait que 07aeec98
fait partie de la branche dev
. Il est vrai que ce commit est un ancêtre de dev
ses modifications sont nécessaires pour atteindre le dernier commit dans le fichier dev
. Cependant, il y a d'autres commits qui sont nécessaires pour atteindre le dernier dev
et ceux-ci ne sont pas nécessairement dans l'histoire de l'Europe. 07aeec98
.
8480e8ae
(où vous avez ajouté bb.txt) n'est par exemple pas dans l'historique de 07aeec98
. Si vous passez de 07aeec98
vous n'obtiendrez pas les modifications introduites par 8480e8ae
.
En d'autres termes : si vous fusionnez la branche A et la branche B dans la branche C, puis créez une nouvelle branche sur un commit de A, vous n'obtiendrez pas les changements introduits dans B.
Même chose ici, vous aviez deux branches parallèles master et dev, que vous avez fusionnées dans dev. Se brancher à partir d'un commit de master (plus ancien que la fusion) ne vous fournira pas les changements de dev.
Si vous voulez en permanence Pour intégrer les nouvelles modifications de master dans vos branches de fonctionnalité, vous devez fusionner les modifications de master avec celles de vos branches de fonctionnalité. master
en eux et continuez. Cela créera des commits de fusion dans vos branches de fonctionnalité, cependant.
Si vous n'avez pas publié vos branches de fonctionnalités, vous pouvez également les rebaser sur le master mis à jour : git rebase master featureA
. Soyez prêt à résoudre d'éventuels conflits.
Si vous souhaitez un flux de travail qui vous permette de travailler sur des branches de fonctionnalités sans commits de fusion et de continuer à intégrer les modifications les plus récentes dans master, je vous recommande ce qui suit :
- base chaque nouvelle branche de fonctionnalité sur un commit de master
- créer un
dev
sur un commit de master
- lorsque vous avez besoin de voir comment votre branche de fonctionnalité s'intègre aux nouveaux changements dans master, fusionnez master et la branche de fonctionnalité dans le fichier
dev
.
Ne vous engagez pas dans dev
directement, ne l'utilisez que pour fusionner d'autres branches.
Par exemple, si vous travaillez sur les caractéristiques A et B :
a---b---c---d---e---f---g -master
\ \
\ \-x -featureB
\
\-j---k -featureA
Fusionner les branches dans un dev
pour vérifier s'ils fonctionnent bien avec le nouveau master :
a---b---c---d---e---f---g -master
\ \ \
\ \ \--x'---k' -dev
\ \ / /
\ \-x---------- / -featureB
\ /
\-j---k--------------- -featureA
Vous pouvez continuer à travailler sur vos branches de fonctionnalité, et continuer à fusionner les nouvelles modifications des branches master et de fonctionnalité dans le système de gestion des modifications. dev
régulièrement.
a---b---c---d---e---f---g---h---i----- -master
\ \ \ \
\ \ \--x'---k'---i'---l' -dev
\ \ / / /
\ \-x---------- / / -featureB
\ / /
\-j---k-----------------l------ -featureA
Lorsque le moment est venu d'intégrer les nouvelles fonctionnalités, fusionnez les branches des fonctionnalités (pas les dev
!) en maître.
0 votes
Malheureusement, le dépôt git original sur github n'existe plus, ce qui rend cette question et les réponses qui y font référence moins utiles.