181 votes

Mercurial : décapitation une tête

Il y a une révision qui n'a pas fonctionné, j'ai donc l'intention de l'abandonner sans le supprimer de l'historique.

J'ai mis à jour à partir d'une version antérieure et engagée, créant ainsi une nouvelle tête.

Je n'ai pas de branches, je ne veux pas les branches, je veux juste tout simplement aller avec le nouveau de la tête exactement comme il est, rien de compliqué, pas de fusion, pas de soucis, il suffit d'aller sur l'oubli de la précédente.

Je n'arrive pas à trouver comment faire, et je commence à croire qu'il ne peut pas être fait. Tout ce que je trouve est que des trucs sur les branches, ou des trucs au sujet de la fusion.

181voto

Niall C. Points 7150

Mise à jour de votre référentiel à la tête avec la révision que vous voulez oublier, puis utilisez l' --close-branch option d' hg commit de marque (anonyme) de la branche fermée. Puis mise à jour à la tête de la branche que vous ne voulez, et continuer à travailler.

Vous pouvez toujours voir la branche fermé si vous utilisez l' -c option d' hg heads, mais il n'apparaît pas par défaut et hg merge savez pas essayer de fusionner avec la fermeture de la tête.

Vous aurez besoin d'utiliser hg push --force la première fois que vous appuyez sur cette fermées à la tête d'un autre référentiel, puisque vous êtes réellement créer de nouvelles têtes dans le dépôt distant lorsque vous appuyez sur. Alors, dites-Mercurial que ce est correct avec --force. Les gens qui tirent la fermeture de la tête ne sera pas dérangé par tous les avertissements.

68voto

Nick Pierpoint Points 7976

Je sais que vous n'avez pas envie de travailler avec des branches, à ce stade, ce qui est bien, mais c'est exactement ce que vous avez fait. Lorsque vous êtes allé retour à une version antérieure et commis quelque chose qui a travaillé vous avez créé une branche - une nouvelle branche, mais une branche tout de même.

Il n'y a pas de problème avec juste comptable sur la juste comme vous êtes et ne pas se soucier d'avoir plusieurs têtes, mais si vous voulez les choses en ordre afin de ne pas accidentellement choisir le mauvais de la tête un moment, puis vous pouvez tuer la vieille branche.

Il y a un bon article dans l'Mercurial documentation qui vous emmène à travers un certain nombre d'options autour de l'Élagage des Branches Mortes.

Je pense que la meilleure option pour vous est de marque la vieille branche "fermée". Si votre ancien chef de révision est "123", puis:

hg update -r 123
hg commit --close-branch -m 'Closing old branch'
hg update -C default

22voto

Artur Barseghyan Points 439
<h1>Tout d’abord, tapez :<pre><code></code></pre><h1>Imaginez, vous avez trois chefs répertoriés :</h1><pre><code></code></pre><h1>Disons que vous voulez garder le dernier chef actif (223) et fermer le reste.</h1><p>Vous voudriez faire comme suit :</p><h1>Fermer la tête #59</h1><pre><code></code></pre><h1>Fermer la tête #123</h1><pre><code></code></pre><h1>Valider les modifications</h1><pre><code></code></pre><p>Et vous avez terminé.</p></h1>

12voto

msarchet Points 9059

Vous voulez utiliser `` . Cette commande supprime les modifications apportées par l’ensemble de modifications de n’importe quel enfant changeset.

Découvrez cela pour une bonne explication. Désinstallation de mercurial

1voto

kjam Points 83

Vous pouvez cloner votre repo endommagé vers un nouveau sans clonage que non désirées de la tête. Puis supprimer l’ancien référentiel, clone de mouvement nouvellement créé à l’emplacement d’origine et continuer à travailler avec elle. Cela prendra du temps, mais vous obtiendrez un dépôt parfaitement propre sans un signe de cette révision non désiré.

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