web-dev-qa-db-fra.com

Problème "Push crée une nouvelle tête distante"

J'ai lu toutes les SO questions sur ce problème et je ne peux toujours pas le résoudre. J'utilise TortoiseHg. J'ai travaillé sur une branche latérale et je souhaite maintenant la réintégrer dans la branche principale. J'ai extrait toutes les modifications apportées dans les deux branches, mises à jour vers la branche principale et fusionnées (et validées). Mais quand j'essaie de pousser tout ça, j'obtiens le message "Abandon: Push crée une nouvelle tête distante". J'ai également essayé (comme suggéré dans l'une des questions de SO) de fermer la succursale à l'aide de l'option --close-branch. La seule chose que je n'ai pas essayée est de «forcer» Push.

Aucune suggestion? Ou est-ce que pousser la force est la seule option?

See screenshot

12
Itamar Katz

Je viens d'essayer une configuration similaire, et je reçois le même avertissement. Apparemment, bien que la deuxième tête que vous essayez de pousser soit fermée, elle est vue comme une autre tête pendant la poussée. Et fermer les deux têtes ne semble pas être susceptible d'être poussé non plus.

Vous pouvez forcer le Push, ça devrait aller, mais vous pourriez éventuellement avoir le même problème si vous gardez plusieurs têtes sur votre branche visualization, comme vous le faites déjà avec les changesets 14 et 20. Pour résoudre le problème une fois pour toutes, suggèrent plutôt de fusionner les deux changesets (14 et 20) et de refermer la tête finale.

6
Vince

Juste pour tout le monde qui rencontre ce problème. Ce problème a été causé par certaines révisions locales de la branche par défaut que je n’avais pas poussée avant de commencer à travailler sur une nouvelle branche.

J'avais fusionné la dernière révision que j'avais tirée pour la branche default avec ma new branche, mais cela laisse vos modifications locales sur la branche default commit mais non poussé.

Si vous essayez de les pousser, ce n'est pas votre nouvelle branche qui crée une tête distante, ce sont les révisions non poussées de la branche par défaut qui crée une tête distante.

Quand j'ai enlevé ces révisions avec hg strip -r 1234

hg Push --new-branch 

est allé parfait.

Ce qui m'a mis sur la bonne voie était

hg heads

Avec a montré que j'avais deux têtes qui avaient le nom de la branche par défaut avec des numéros de révision différents.

8
gijswijs

Merci pour les réponses, j'ai définitivement appris de nouveaux trucs.

Ce que j’ai fini par faire, c’est cloner une première révision du référentiel remote , c’est-à-dire un référentiel qui n’a pas tous les commits de mes fusions, etc. J'ai ensuite extrait les ensembles de modifications, fusionné et validé. . Ensuite, le Push a finalement réussi.

C’était fondamentalement les mêmes étapes que j’avais essayé de faire auparavant, mais lors du premier procès (sans succès), j’ai apparemment décomposé en un plus grand nombre que nécessaire, et quelque chose a mal tourné à un moment donné.

1
Itamar Katz

Essayez cette solution,

Supposition. Vous avez assez de droits pour fermer et créer la branche dans la télécommande

Cela se produit parce que vous essayez de réécrire l'historique. Essayez simplement hg Push -f qui créera deux têtes dans le dépôt distant, ce que vous ne pouvez pas

Donc, la première connexion à votre télécommande et fermer la branche, maintenant à votre locale et Push en utilisant hg Push -f. La nouvelle branche nécessaire sera créée automatiquement avec la condition d'origine telle qu'elle était auparavant.

0
nehemiah