Comment puis-je annuler ma dernière modification commise accidentellement (non poussée) dans Mercurial?
Si possible, une façon de le faire avec TortoiseHg serait préférable.
Mettre à jour
Dans mon cas concret, j'ai commis un changeset (non poussé). Ensuite, j'ai tiré et mis à jour du serveur. Avec ces nouvelles mises à jour, j'ai décidé que mon dernier commit était obsolète et que je ne voulais pas le synchroniser. Il semble donc que ce hg rollback
n'est pas exactement ce que je recherche, car cela annulerait le pull au lieu de mon commit.
mercurial
tortoisehg
mercurial-commit
Martin Buberl
la source
la source
hg rollback
, puis de tirer à nouveau?strip --keep
: stackoverflow.com/questions/29413851/… résout directement la tâche, tout comme MQ qimport. Sinon, il peut être préférable de simplementrebase
dans le scénario si les changements locaux doivent également être conservés et qu'il n'y a pas de conflit. (Utilisez une fusion pour conserver certaines modifications combinées des deux branches lorsque c'est l'objectif final du graphe souhaité, en particulier dans un cas non rapide.) Il peut également être valide de fermer la branche, ce qui `` préserve l'historique '' (mais différemment d'une fusion) en fonction de l'état final souhaité.hg strip --keep
est la commande ne pas utiliser, mais vous devez fournir une révision, par exemple:hg strip --keep -r .
. Cette réponse explique bien stackoverflow.com/a/19064016/1286571Réponses:
Une façon serait
(obsolète à partir de Hg2.7, août 2013)hg rollback
Voir la section Récupération de TortoiseHg :
Ce fil détaille également la différence entre
hg rollback
ethg strip
:(écrit par Martin Geisler qui contribue également à SO)
ForeverWintr suggère dans les commentaires (en 2016, 5 ans plus tard)
la source
hg rollback
annulera l'extraction au lieu de la validation.hg commit --amend
est censé fonctionner, mais pour moi, cela m'a donné un éditeur pour modifier le message de validation et aucune méthode pour modifier les fichiers inclus. J'ai quitté l'éditeur sans enregistrer et j'ai constaté que mon commit erroné avait été modifié pour inclure TOUS les fichiers modifiés!hg commit --amend
. Vous pouvez «annuler la validation» des fichiers en leshg forget
ajoutant d' abord , par exemplehg forget filea; hg commit --amend
:, mais cela semble peu intuitif. hg strip --keep est probablement une meilleure solution pour le hg moderne.hg strip
supprimera complètement une révision (et ses descendants) du référentiel.Pour utiliser strip, vous devrez installer MqExtension en ajoutant les lignes suivantes à votre .hgrc (ou mercurial.ini):
Dans TortoiseHg, la commande strip est disponible dans l'atelier. Faites un clic droit sur une révision et choisissez «Modifier l'historique» -> «Supprimer».
Depuis les
strip
modifications de l'historique du référentiel, vous ne devez l'utiliser que sur les révisions qui n'ont encore été partagées avec personne. Si vous utilisez mercurial 2.1+, vous pouvez utiliser des phases pour suivre ces informations. Si un commit est toujours en phase de brouillon, il n'a pas été partagé avec d'autres référentiels afin que vous puissiez le supprimer en toute sécurité. (Merci à Zasurus pour l'avoir signalé).la source
Puisque vous ne pouvez pas revenir en arrière, vous devez fusionner ce commit dans la nouvelle tête que vous avez obtenue lorsque vous avez tiré. Si vous ne voulez pas du travail que vous avez fait, vous pouvez facilement le faire en utilisant cette astuce .
Donc, si vous avez tiré et mis à jour leur tête, vous pouvez le faire:
conserve toutes les modifications de la révision actuellement extraite, et aucune des modifications de la révision non extraite (celle que vous avez écrite et que vous ne voulez plus).
C'est un excellent moyen de le faire, car cela permet de garder votre historique précis et complet. Si dans 2 ans quelqu'un trouve un bogue dans ce que vous avez abattu, vous pouvez regarder dans votre implémentation (inutilisée mais sauvegardée) de la même chose et dire "oh, je l'ai bien fait". :)
la source
hg rollback
est ce que vous voulez.Dans TortoiseHg, le
hg rollback
est accompli dans la boîte de dialogue de validation. Ouvrez la boîte de dialogue de validation et sélectionnez "Annuler".la source
Dans la version actuelle de TortoiseHg Workbench 4.4.1 (07.2018), vous pouvez utiliser
Repository
-Rollback/undo...
:la source
Sa solution de contournement.
Si vous ne poussez pas vers le serveur, vous clonerez dans un nouveau dossier, sinon supprimerez (supprimez tous les fichiers) de votre dossier de référentiel et clonerez un nouveau.
la source
après avoir extrait et mis à jour votre espace de travail, faites un thg et faites un clic droit sur l'ensemble de modifications dont vous souhaitez vous débarrasser, puis cliquez sur Modifier l'historique -> bande, cela supprimera l'ensemble de modifications et vous pointerez vers le conseil par défaut.
la source