95 votes

Mercurial : supprimer tous les ensembles de modifications locales, revenir à l’arbre

Donc je suis en utilisant Mercurial et j'ai eu un terrible gâchis localement, avec trois têtes. Je ne peux pas pousser, et je veux juste supprimer tous mes changements locaux et s'engage et recommencer totalement avec le code propre et propre histoire.

En d'autres termes, je veux finir avec (a) exactement le même code en local comme il en existe dans l'extrémité de la branche distante et (b) aucun historique de toutes les modifications locales.

Je connais hg update -C écrase toutes les modifications locales. Mais comment puis-je supprimer toutes les modifications locales?

Merci!

(Pour être clair, je n'ai aucun intérêt dans la préservation de tout le travail que j'ai effectué à l'échelle locale. Je veux juste la façon la plus simple de revenir à une totalement propre local de la caisse.)

131voto

just somebody Points 9534

Lorsque le moyen le plus simple (un nouveau ) n’est pas pratique, j’utilise , qui est livré avec la `` extension :

répéter jusqu'à ce que reste tranquille.efface `` et tous ses descendants.

edit : une approche plus intelligente consiste à utiliser la langue de revset :

21voto

Martin Geisler Points 44779

Vous aurez envie de faire un clone local où vous ne conserver que les révisions qui sont également présents dans le dépôt distant. L'utilisation de TortoiseHg, hg log ou similaire à la figure de vos révisions est que la dernière révision que vous n'avez pas à faire (celle d'avant la pagaille a commencé). À l'aide de hg outgoing peut aider ici, il affichera la liste de toutes les révisions que vous faites: choisissez un numéro de révision avant tout de ceux-ci.

Si l'objectif de la révision est appelé good et votre clone est appelé foo, alors:

hg clone -r good foo foo-clean

Ce sera rapide, le fonctionnement en mode local -- il n'y a pas de raison de tout télécharger à nouveau. L' foo-clean clone ne contiennent que des révisions révisions good. Vous pouvez maintenant remplacer foo-clean/.hg/hgrc avec foo/.hg/hgrc afin de préserver votre référentiel local des paramètres tels que la valeur par défaut push/pull chemin.

Lorsque vous êtes satisfait et que l' foo-clean a tout ce dont vous avez besoin à partir d' foo, puis il suffit de supprimer foo et renommer foo-clean de foo. Faire un hg pull pour obtenir toutes les nouvelles révisions du dépôt distant dans votre clone et continuer comme d'habitude.


Si personne n'a poussé de nouveaux ensembles de modifications sur le dépôt distant, alors il est très simple de déterminer quelle version vous souhaitez utiliser en tant que good ci-dessus: hg id default vais vous raconter l'ID de la pointe dans le dépôt distant.

9voto

alemjerus Points 3729

Bien. Il suffit donc de supprimer tous les trucs locaux, le nouveau référentiel local et le dernier bout que vous avez. N’oubliez pas de `` après cela.

5voto

averasko Points 189

Vous pouvez utiliser

révision de la bande de Hg

pour tuer toute révision et sa sous-arborescence dans votre répertoire local.

http://mercurial.Selenic.com/wiki/Strip

Mais n’essayez pas de l’utiliser pour tout ce qui a été déjà poussé.

2voto

OJ. Points 16939

Il suffit de supprimer tout ce que vous avez sur votre système local et re-clonez le repo distant.

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