J'ai accidentellement fait un "hg commit --amend" au lieu d'un simple commit. Comment puis-je annuler le commit avant l'amendement?
Vous pouvez utiliser hg reflog
(à partir de journal extension ) et hg reset <hash>
.
hg reflog -v
devrait donner quelque chose comme:
<old-hash> -> <new-hash> <user> <timestamp> commit --amend <some-path>
si tel est le amendement que vous souhaitez annuler, utilisez simplement:
hg reset <old-hash>
La validation sera rétablie comme auparavant et les modifications qui ont été modifiées doivent désormais être des modifications non validées (vérifiez en utilisant hg status
et hg diff
).
.hg/strip-backup
hg unbundle .hg/strip-backup/<latest backup>
histedit
, vous pouvez utiliser hg histedit
pour la changer (par exemple, sélectionnez edit
afin d’obtenir un état juste avant la validation, c’est-à-dire quand vous pourrez voir toutes les modifications avec hg diff
). N'oubliez pas de dépouiller la vieille tête.
Si votre version de Mercurial est suffisamment nouvelle, vous devriez pouvoir utiliser la commande hg unamend
à partir de l'extension uncommit
fournie avec Mercurial. Cela peut nécessiter que les marqueurs d'obsolescence soient activés, je ne suis pas sûr.
Activez l'extension uncommit
, ajoutez ceci à votre ~/.hgrc
:
[extensions]
uncommit =
Exécute en fait l'unamend:
hg unamend