web-dev-qa-db-fra.com

Créer une branche dans Git à partir d'une autre branche

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 .

802
revohsalf

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.

1161
Abizern

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:

  • maître
  • dev
  • branch1

Donc, si vous voulez créer une nouvelle branche appelée "subbranch_of_b1" sous la branche nommée "branch1" suivez les étapes suivantes:

  1. Passer à la caisse ou changer en "branche 1"

    git checkout branch1
    
  2. 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).

  3. Maintenant, après avoir travaillé avec le subbranch_of_b1 , vous pouvez valider et pousser ou le fusionner localement ou à distance.

A sample Graphical Illustration Of Creating Branches Under another Branch

Poussez le subbranch_of_b1 à distance

 git Push Origin subbranch_of_b1 
322
Praveen George

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
13
ToothlessRebel

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'

  • - c est l'abréviation de - create et remplace le bien connu git checkout -b

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 .

2
JSON C11

Si vous souhaitez créer une branche à partir d'une autre branche, suivez les étapes ci-dessous:

Hypothèses:

  1. Vous êtes actuellement dans la branche principale.
  2. Vous n'avez aucune modification à valider. (Si vous avez des modifications à valider, rangez-les!).
  3. BranchExisting est le nom de la branche à partir de laquelle vous devez créer une nouvelle branche nommée BranchMyNew.

étapes:

  1. 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.

  1. Maintenant, du contrôle de la branche principale à la branche récemment extraite

    $ git checkout BranchExisting
    
  2. Vous êtes maintenant dans BranchExisting. Créez maintenant une nouvelle branche à partir de cette branche existante.

    $ git checkout -b BranchMyNew
    

Voici!

1
Darshit

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"

0
Alexander Samoylov