294 votes

fusionner une branche locale dans une autre branche locale

J'ai plusieurs branches qui sont branchées à partir du master (chacune dans un sous-répertoire séparé).

  • Branch1 : nouveau développement, pas encore complètement terminé
  • Branch2 : hotfix pour un problème, mais toujours en test
  • Branch3 : branche de désordre, que je ne restaurerai pas

Avant que le test du correctif ne soit terminé, j'aimerais que le code soit déjà disponible dans la branche 1, afin de pouvoir continuer à développer avec le correctif en place.
(Mais comme je n'ai pas beaucoup d'expérience avec git, j'ai d'abord commencé à jouer avec la fusion dans une 3ème branche, spécialement créée pour y mettre le bazar, avant de mettre le bazar dans la branche 1 ou 2).

Dans ma 3ème branche, j'ai d'abord essayé ce qui suit :

git merge feature/Branch1

mais cela a donné l'erreur suivante :

fatal: 'feature/Branch1' does not point to a commit

J'ai ensuite fait un commit -a dans ma branche 1 et j'ai réessayé, mais il continue à donner la même erreur.

Qu'est-ce que je fais de mal ? Que dois-je faire pour fusionner le code de - dans ce cas - Branch1 avec Branch3 ?

391voto

gabra Points 2459

Tout d'abord, passez à votre Branch3 :

git checkout Branch3

Puis fusionner la branche 1 :

git merge Branch1

Et si vous voulez les commits mis à jour de Branch1 sur Branch2, vous recherchez probablement git rebase

git checkout Branch2
git rebase Branch1

Ceci va mettre à jour votre Branch2 avec les dernières mises à jour de Branch1.

1 votes

(Je veux les mises à jour de Branch2 vers Branch1 ;-) ) Branch2 voit bien Branch1, mais pas l'inverse lorsque je fais un git branch -a dans les deux branches. Par conséquent, je ne peux pas faire un rebasement vers Branch2 dans Branch1 : git rebase Branch2 --> fatal : Needed a single revision

0 votes

Lorsque j'effectue le rebasement en tant que git rebase origin/Branch2, le message d'erreur + invalid upstream origin/Branch2 s'affiche toujours.

0 votes

Donc ce qui précède fusionne tous les commit de Branch1 dans Branch3 ou vice versa ? Master -> git branch Dev (alors que sur Dev -> git branch Dev1). J'ai apporté des modifications à Dev1 et je voudrais fusionner avec Dev.

58voto

Andrew Koper Points 389
  1. git checkout [branchYouWantToReceiveBranch] - branche de la caisse que vous voulez recevoir branche
  2. git merge [branchYouWantToMergeIntoBranch]

33voto

Michael Teter Points 107

Pour fusionner une branche dans une autre, comme par exemple fusionner la branche "feature_x" dans la branche "master" :

git checkout master

git merge feature_x

Cette page est le premier résultat de plusieurs moteurs de recherche lorsqu'ils recherchent "git merge one branch into another". Cependant, la question originale est plus spécifique et un cas particulier que le titre ne le suggère.
Il est également plus complexe que le sujet et l'expression de recherche. Il s'agit donc d'une réponse minimale mais explicative pour le bénéfice de la plupart des visiteurs.

19voto

Abraams gtr Points 77

Vous pouvez utiliser ces commandes :

git checkout <the branch you you want to merge in to>

git merge <the branch you want contents from>

11voto

Simone Gianni Points 4009

Au cas où vous seriez arrivé ici parce que vous avez copié un nom de branche depuis Github, notez qu'une branche distante n'est pas automatiquement aussi une branche locale, donc une fusion ne fonctionnera pas et donnera l'erreur "not something we can merge".

Dans ce cas, vous avez deux possibilités :

git checkout [branchYouWantToMergeInto]
git merge origin/[branchYouWantToMerge]

ou

# this creates a local branch
git checkout [branchYouWantToMerge]

git checkout [branchYouWantToMergeInto]
git merge [branchYouWantToMerge]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X