428 votes

La fusion de Git rapporte "Déjà à jour" bien qu'il y ait une différence

J'ai un dépôt git avec 2 branches: le maître et le test.

Il y a des différences entre le maître et le test de branches.

Les deux branches ont tous les changements.

Si je fais:

git checkout master
git diff test

Un écran de changements s'affiche montrant les différences. Je veux fusionner les modifications dans le test de la branche et donc faire:

git merge test

Mais le message "Déjà à jour"

Cependant, en examinant les fichiers de chaque branche différente montre clairement les différences.

Quel est le problème et comment le résoudre?

229voto

Bombe Points 34185

Le message "Déjà à jour" signifie que tous les changements de la branche que vous essayez de fusionner ont déjà été fusionnés dans la branche sur laquelle vous vous trouvez. Plus spécifiquement, cela signifie que la branche que vous essayez de fusionner est un parent de votre branche actuelle . Félicitations, c'est la fusion la plus facile que vous puissiez faire. :)

Utilisez gitk pour examiner votre référentiel. Le libellé de la branche "test" doit se situer quelque part sous le libellé de votre branche "maître".

189voto

ACarter Points 1215

Réponse tardive, mais pour le compte rendu:

Cela m’arrive souvent lorsque je sais que des modifications ont été apportées au maître distant. J’essaie donc de les fusionner à l’aide de git merge master . Toutefois, cela ne fusionne pas avec le maître distant, mais avec votre maître local.

Donc, avant de procéder à la fusion, passez à la caisse principale, puis git pull là-bas. Vous pourrez ensuite fusionner les nouvelles modifications dans votre branche.

6voto

VonC Points 414372

Une fusion est toujours entre l'actuel président et un ou plusieurs commits (généralement, chef de la direction générale ou tag),
et le fichier d'index doit correspondre à l'arbre de la TÊTE commit (c'est à dire le contenu de la dernière validation) quand il commence.
En d'autres termes, git diff --cached HEAD doit déclarer aucun changement.

La fusion de commettre, est déjà contenue dans HEAD. C'est le cas le plus simple, appelé "Déjà à jour."

Que devraient dire les commits dans le test sont déjà fusionné en maître, mais depuis d'autres commits sont fait sur le master, git diff test serait encore donner quelques différences.

0voto

The Unfun Cat Points 1646

C'est ce qui m'est arrivé lorsque j'ai essayé de fusionner la branche A avec le maître et que j'avais oublié de commettre quoi que ce soit sur la branche A.

Dois d'abord valider la branche A, je pouvais alors basculer en maître et fusionner la branche A.

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