Je souhaite supprimer complètement un commit Mercurial comme s'il n'avait jamais été entré dans le référentiel et revenir à mon commit précédent.
Est-ce possible?
Si c'était votre dernier commit et que vous ne l'avez poussé nulle part, vous pouvez le faire avec rollback
. Sinon, non. Pas vraiment. Il est temps de changer vos mots de passe.
Edit: Il a été souligné que vous pouvez cloner à partir d'une révision plus ancienne et fusionner les modifications que vous souhaitez conserver. C'est également vrai, sauf si vous l'avez poussé vers un référentiel que vous ne contrôlez pas. Une fois que vous aurez poussé, vos données seront très probablement très difficiles à récupérer.
Vous pouvez essayer de supprimer les informations mq sur votre commit.
Pour modifier l'historique, j'utiliserais l'extension Histedit Extension .
hg histedit 45:c3a3a271d11c
Cependant, gardez à l'esprit que cela n'a de sens que dans une situation où vous n'avez pas encore poussé les validations vers le référentiel public, vous êtes propriétaire du référentiel public et/ou vous pouvez rendre compte de tous les clones. Si vous recevez l'erreur suivante:
abort: can't rebase immutable changeset 43ab8134e7af
Cela signifie que Mecurial pense qu'il s'agit d'un ensemble de modifications public (voir phases ) qui a déjà été poussé - vous pouvez le forcer à être un draft
à nouveau en faisant:
hg phase -f -d 45:c3a3a271d11c
Je rencontre cela assez souvent. Je fais un commit et alors tire pour pousser. Mais alors il y a quelque chose qui fait que mon nouveau commit est inutile. Un simple hg rollback
ne suffit pas car cela ne fait qu'annuler la traction ...
Voici la chose à faire:
hg strip <rev>
Les choses sont indolores lorsque vous ne poussez vos ensembles de modifications nulle part.
S'il s'agit de plusieurs validations et/ou que vous l'avez déjà poussé ailleurs, vous pouvez cloner votre référentiel et spécifier le dernier ensemble de modifications à cloner.
Voir ma réponse ici comment faire cela:
Mercurial: Correction d'un historique borked
Si vous ne vous êtes engagé que localement et n'avez pas poussé, vous pouvez simplement créer un clone localement (comme décrit dans mon lien) et vous avez terminé.
Si vous avez déjà poussé vers un référentiel distant, vous devrez le remplacer par votre clone.
Bien sûr, cela dépend si vous êtes capable (ou autorisé) de le faire.
Vous pouvez utiliser "hg backout" pour effectuer une fusion inversée. Toutes les options sont discutées dans le livre gratuit "Mercurial: The Definitive Guide":
http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html
Si vous utilisez la tortue, vous pouvez utiliser l'historique des modifications> bande ...
Oui. Sauf erreur, à partir de la v2.3 (rel. 2012/08/01), vous pouvez utiliser HisteditExtension avec un drop
pour supprimer une validation, avec strip
ou backout
pour supprimer les modifications.
Une simple recherche Google sur la fonctionnalité: https://www.google.com/webhp#q=histedit+drop