Créer une branche dans Git d'une autre branche
-
11-10-2019 - |
Question
J'ai deux branches: maître et dev
Je veux créer une "branche de fonction" de la branche dev .
À l'heure actuelle sur la branche dev, je fais:
$ git checkout -b myfeature dev
... (un travail)
$ git commit -am "blablabla"
$ git push origin myfeature
Mais, après avoir visualisé mes branches, je me suis:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Je veux dire que la branche semble ff fusionné, et je ne comprends pas pourquoi ...
Qu'est-ce que je fais mal?
Pouvez-vous me expliquer comment vous s'il vous plaît bifurquer d'une autre branche et pousser vers le dépôt distant pour la branche de fonction?
Tout ce que dans un modèle de branchement comme celui décrit ici .
La solution
Si vous aimez la méthode dans le lien que vous avez posté, consultez la page Git flux .
Il est un ensemble de scripts qu'il a créés pour ce flux de travail.
Mais pour répondre à votre question:
$ git checkout -b myFeature dev
Crée branche MyFeature hors dev. Faites votre travail et
$ git commit -am "Your message"
Maintenant fusionner vos modifications dev sans avance rapide
$ git checkout dev
$ git merge --no-ff myFeature
Maintenant les modifications au serveur
$ git push origin dev
$ git push origin myFeature
Et vous le verrez comment vous le voulez.
Autres conseils
Si vous voulez créer une nouvelle branche de l'une des branches existantes dans Git, il suffit de suivre les options.
Premier changement / caisse dans la branche où vous voulez 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:
-
Commander ou changement dans "Branch1"
git checkout branch1
-
Maintenant, créez votre nouvelle branche appelée "subbranch_of_b1" sous la "Branch1" en utilisant la commande suivante.
git checkout -b subbranch_of_b1 branch1
Le ci-dessus va créer une nouvelle branche appelée subbranch_of_b1 sous la branche Branch1 (notez que
branch1
dans la commande ci-dessus n'est pas obligatoire puisque la tête pointe actuellement il , vous pouvez le préciser si vous êtes sur une autre branche cependant). -
après avoir travaillé avec subbranch_of_b1 vous pouvez vous engager et pousser ou fusionner localement ou à distance.
pousser la subbranch_of_b1 à distance
git push origin subbranch_of_b1
Créer une branche
- Créer branche lorsque la branche principale est extrait. Ici commits en maître seront synchronisés à la branche que vous avez créé.
$ git branch branch1
- Créer branche quand Branch1 est extrait. Ici commits à Branch1 seront synchronisés à succursale2
$ git branch branch2
Commander une branche
branches de commutation de commande de git checkout ou restaurer des fichiers de travail d'arbres
-
$ git checkout branchname
Modification du nom d'une branche
-
$ git branch -m branch1 newbranchname
Supprimer une branche
-
$ git branch -d branch-to-delete
-
$ git branch -D branch-to-delete
( suppression de la force sans vérifier l'état fusionné )
Créer et Direction du commutateur
-
$ git checkout -b branchname
Branches qui sont complètement inclus
-
$ git branch --merged
************************** Différences de branche [git diff branch1..branch2] **** ********************
différence multiligne-
$ git diff master..branch1
-
$ git diff --color-words branch1..branch2
Faire un travail simultané sur la branche dev
. Ce qui se passe est que, dans votre scénario la branche de fonction se déplace vers l'avant de la pointe de la branche dev, mais la branche dev ne change pas. Il est plus facile de dessiner une ligne droite, car il peut être considéré comme mouvement vers l'avant. Vous l'avez fait au point A sur dev, et de vous il simplement continué sur un chemin parallèle. Les deux branches ont pas vraiment divergé.
Maintenant, si vous faites un COMMIT dev, avant de fusionner, vous recommencera à la commettre, A, mais dispose désormais ira à C et dev à B. Cela montrera la division que vous essayez de visualiser, comme les branches ont maintenant divergé.
*-----*Dev-------*Feature
Versus
/----*DevB
*-----*DevA
\----*FeatureC
git switch
et git restore
pour diviser les responsabilités de git checkout
Création d'une nouvelle branche d'une branche existante de git 2.23:
git switch -c my-new-branch
Switched à une nouvelle branche ma nouvelle branche '
- -c est l'abréviation de - créer et remplace le bien connu git checkout -b
Jetez un oeil à ce blog Github expliquant les changements plus en détail:
Git 2.23 apporte une nouvelle paire de commandes expérimentales à la suite d'exister les: commutateur git et git restaurer . Ces deux sont destinés, à terme, fournir une meilleure interface pour la caisse git bien connu. Le nouveau commandes intention d'avoir chacun une séparation claire, d'une manière ordonnée jusqu'à divvying ce que les nombreuses responsabilités de git checkout
Si vous voulez faire une branche d'une autre branche puis suivez les étapes ci-dessous:
Hypothèses :
- Vous êtes actuellement dans la branche principale.
- Vous avez aucun changement à commettre. (Si vous avez des modifications pour appliquer, planquer!).
-
BranchExisting
est le nom de la branche à partir de laquelle vous devez faire une nouvelle branche avec le nomBranchMyNew
.
étapes :
-
Fetch la branche à votre machine locale.
$ git fetch origin BranchExisting : BranchExisting
Cette commande va créer une nouvelle branche dans votre région avec le même nom de branche.
-
, de la caisse de la branche principale à la branche nouvellement récupérée
$ git checkout BranchExisting
-
Vous êtes maintenant dans BranchExisting. Maintenant, créez une nouvelle branche de cette branche existante.
$ git checkout -b BranchMyNew
Ici, vous allez!
Pour la création d'une branche d'un autre peut utiliser cette syntaxe ainsi:
git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>
Il est un peu plus court que "git checkout -b" + "push origin git"