J'ai deux branches: master et dev
Je veux créer une "branche de fonctionnalité" à partir de la branche dev .
Actuellement sur la branche dev, je fais:
$ git checkout -b myfeature dev
... (certains travaux)
$ git commit -am "blablabla"
$ git Push Origin myfeature
Mais, après avoir visualisé mes branches, j'ai eu:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Je veux dire que la branche semble avoir fusionné et je ne comprends pas pourquoi ...
Qu'est-ce que je fais mal?
Pouvez-vous m'expliquer s'il vous plaît comment vous vous séparez d'une autre branche et repoussez-vous au référentiel distant pour la branche de fonctionnalité?
Tout cela dans un modèle de branchement comme celui décrit ici .
Si vous aimez la méthode dans le lien que vous avez posté, jetez un oeil à Git Flow .
C'est un ensemble de scripts qu'il a créé pour ce flux de travail.
Mais pour répondre à votre question:
$ git checkout -b myFeature dev
Crée la branche MyFeature de dev. Faites votre travail et ensuite
$ git commit -am "Your message"
Maintenant, fusionnez vos modifications avec dev sans une avance rapide
$ git checkout dev
$ git merge --no-ff myFeature
Maintenant, envoyez les modifications au serveur
$ git Push Origin dev
$ git Push Origin myFeature
Et vous verrez comme vous le souhaitez.
Si vous souhaitez créer une nouvelle branche à partir de l'une des branches existantes dans Git, suivez simplement les options.
Commencez par changer/extraire dans la branche à partir de laquelle vous souhaitez créer une nouvelle branche. Par exemple, si vous avez les branches suivantes comme:
Donc, si vous voulez créer une nouvelle branche appelée "subbranch_of_b1" sous la branche nommée "branch1" suivez les étapes suivantes:
Passer à la caisse ou changer en "branche 1"
git checkout branch1
Maintenant, créez votre nouvelle branche appelée "subbranch_of_b1" sous le "branche1" en utilisant la commande suivante.
git checkout -b subbranch_of_b1 branch1
Ce qui précède créera une nouvelle branche appelée subbranch_of_b1 sous la branche branch1 ( notez que branch1
dans la commande ci-dessus n'est pas obligatoire car le HEAD est en train de pointer dessus, vous pouvez le préciser si vous êtes sur une autre branche).
Maintenant, après avoir travaillé avec le subbranch_of_b1 , vous pouvez valider et pousser ou le fusionner localement ou à distance.
Poussez le subbranch_of_b1 à distance
git Push Origin subbranch_of_b1
Travaillez simultanément sur la branche dev
. Dans votre scénario, la branche de fonctionnalité se déplace depuis le sommet de la branche de dev, mais la branche de dev ne change pas. Il est plus facile de tracer une ligne droite, car cela peut être considéré comme un mouvement en avant. Vous avez réussi à pointer A sur dev et à partir de là, vous avez simplement continué sur un chemin parallèle. Les deux branches n'ont pas vraiment divergé.
Maintenant, si vous faites un commit sur dev, avant de fusionner, vous recommencerez avec le même commit, mais les fonctionnalités iront maintenant à C et dev à B. Cela montrera la scission que vous essayez de visualiser, comme les branches ont maintenant divergé.
*-----*Dev-------*Feature
Versus
/----*DevB
*-----*DevA
\----*FeatureC
Git 2.23 introduit git switch
et git restore
pour répartir les responsabilités de _git checkout
_
Création d'une nouvelle branche à partir d'une branche existante à partir de git 2.23:
_git switch -c my-new-branch
_
est passé sur une nouvelle branche 'my-new-branch'
Jetez un coup d'œil à this Le blog de Github expliquant plus en détail les changements:
Git 2.23 apporte une nouvelle paire de commandes expérimentales à la suite de commandes existantes: git switch et git restore . Ces deux logiciels sont destinés à fournir à terme une meilleure interface au célèbre logiciel Git Checkout. Les nouvelles commandes ont chacune pour objectif de séparer clairement les responsabilités de de Git Checkout .
Si vous souhaitez créer une branche à partir d'une autre branche, suivez les étapes ci-dessous:
Hypothèses:
BranchExisting
est le nom de la branche à partir de laquelle vous devez créer une nouvelle branche nommée BranchMyNew
.étapes:
Récupérez la branche sur votre machine locale.
$ git fetch Origin BranchExisting : BranchExisting
Cette commande créera une nouvelle branche dans votre section locale avec le même nom de branche.
Maintenant, du contrôle de la branche principale à la branche récemment extraite
$ git checkout BranchExisting
Vous êtes maintenant dans BranchExisting. Créez maintenant une nouvelle branche à partir de cette branche existante.
$ git checkout -b BranchMyNew
Voici!
Pour créer une branche à partir d'une autre, vous pouvez également utiliser cette syntaxe:
git Push Origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>
Il est un peu plus court que "git checkout -b" + "git Push Origin"