224 votes

Git et « la branche ' x ' n’est pas entièrement fusionné » erreur

Voici les commandes que j'ai utilisé de la branche master

git branch experiment
git checkout experiment

Alors j'ai apporté quelques modifications à mes fichiers, validé les modifications, et a poussé la nouvelle branche de GitHub.

git commit .
git push -u origin experiment

Pas que, après l' git commit . , j'ai été invité pour un message de commit, et j'en ai donné un. Plus tard, j'ai décidé de fusionner mon expérience de la branche dans la branche master.

git checkout master
git merge experiment

Enfin, j'ai poussé les changements de GitHub.

git push -u origin master

Tout s'est bien passé jusqu'à ce que j'ai essayé de supprimer mon expérience de la branche à l'aide de

git branch -d experiment

J'ai eu le message d'erreur error: The branch 'experiment' is not fully merged. je suis un peu nouveau pour git, et je ne sais pas combien plus je pourrais peut-être fusionner les deux branches. Ce qui me manque ici?

240voto

sehe Points 123151

Ce n'est pas une erreur, c'est un avertissement. Il désigne la direction générale, vous êtes sur le point de supprimer contient des commits qui ne sont pas accessibles à partir de tout autre ref de la tête.

Dans la pratique, cela signifie que vous avez probablement modifié, indexé ou filtrée s'engage et ils ne semblent identiques.

Vous voulez vérifier que vous, en effet, ne manquent pas tout vital s'engage à:

git log --graph --left-right --cherry-pick --oneline master...experiment

Cela vous donnera une liste de toutes les nonshared entre les branches. Dans le cas où vous êtes curieux, il y a peut être une différence sans --cherry-pick et cette différence pourrait bien être la raison de l'avertissement, vous bénéficiez de:

--cherry-pick

Omettre tout s'engager à ce que présente le changement comme une autre de s'engager sur l ' "autre côté" lorsque l'ensemble de commits sont limitées symétrique différence. Par exemple, si vous avez deux branches A et B, d'une manière habituelle à la liste de tous les commits sur un seul côté d'eux est-à gauche-à droite, comme dans l'exemple ci-dessus dans la description de cette option. Il montre, cependant, les commits qui ont été la cerise cueillies de l'autre branche (par exemple, "de la 3ème b" peut être la cerise cueillies à partir de la direction générale). Avec cette option, de telles paires de commits sont exclues de la sortie.

64voto

drwowe Points 575
<p>Comme l’a souligné Drew Taylor, suppression de branche avec -d considère uniquement l' <em>actuel</em> chef pour déterminer si la branche est « complètement fusionnée ». Il va se plaindre même si la branche <em>est</em> fusionnée avec une autre branche. Le message d’erreur pourrait certainement être plus clair à ce sujet... Vous pouvez soit commander la branche fusionnée avant de le supprimer, ou simplement utiliser git branch - D. Le capital -D remplace le contrôle entièrement.</p>

12voto

Drew Taylor Points 196
<p>J’ai eu cela m’arriver aujourd'hui, comme j’étais fusion ma toute première branche de la fonctionnalité retour en maître. Comme certains évoqué dans un thread ailleurs sur SO, le truc était de passer au maître avant d’essayer de supprimer la branche. Une fois dans le dos au maître, git était heureux de supprimer la branche sans tous les avertissements.</p>

10voto

qwertzguy Points 1021
<p>J’ai essayé la réponse de sehe et cela n’a pas fonctionné.<p>Pour trouver les validations qui n’ont pas été fusionnées il suffit d’utiliser :</p><pre><code></code></pre></p>

0voto

yongbin Points 1

Vous pouvez simplement découvrir :

la commande git log --la cerise maître expérimentale...

--joyeux option est synonyme de --droit --cerise-marque-pas-fusionne

git log homme a dit page

il est utile de limiter la sortie à l'commet de notre côté et marquer ceux qui ont été appliquées pour l'autre côté de la fourche de l'histoire avec la commande git log --la cerise en amont...mybranch, semblable à git cherry en amont mybranch.

FYI. --cherry-pick omet équivalent s'engage mais-cerise-marques qui ne fonctionne pas. Il est utile de trouver rebase et de la force de mise à jour des changements entre l'amont et de co-working public direction

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: