我想彻底删除一个Mercurial提交,就像它从未进入过代码仓库一样,并回滚到之前的提交。
这是否可能?
我想彻底删除一个Mercurial提交,就像它从未进入过代码仓库一样,并回滚到之前的提交。
这是否可能?
hg outgoing
中看到它或与另一个存储库共享它。将阶段更改为secret,然后克隆将做大致与我的编辑建议相同的事情。但在那之前,我会使用histedit或mq。 - nmichaels您可以尝试删除有关提交的mq信息。
如果要编辑历史记录,我会使用Histedit Extension扩展程序。
hg histedit 45:c3a3a271d11c
然而请记住,这只在你还没有将提交推送到公共代码库、你拥有公共代码库和/或你能够说明所有克隆版本的情况下才有意义。如果你收到以下错误信息:
abort: can't rebase immutable changeset 43ab8134e7af
这意味着Mecurial认为这是一个公共变更集(请参见phases),已经被推送 - 您可以通过以下方式强制将其重新变为draft
:
hg phase -f -d 45:c3a3a271d11c
hg rollback
不足以解决问题,因为它只能撤销拉取操作...hg strip <rev>
如果你没有将你的更改集推送到任何地方,那么一切都是轻松无痛的。
在2022年,我使用了evolve
扩展程序。它是实现此目的的最佳扩展程序之一。
要删除不需要的变更集(例如,如果您快速进行了代码调整以使其正常工作),请使用prune
命令:
$ echo 'debug hack' >> file1.c
$ hg commit -m 'debug hack'
hg prune .
命令:$ hg prune .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
working directory is now at 2a39221aaebb
1 changesets pruned
过时
标记:$ hg push
searching for changes
no changes found
remote: 1 new obsolescence markers
要检查本地仓库的更改,您可以从远程仓库进行 pull
操作:
$ hg pull
pulling from ssh://userid@server/repo
searching for changes
no changes found
是的。除非我弄错了,从v2.3(rel. 2012/08/01)开始,您可以使用HisteditExtension,使用drop
命令删除提交,以及strip
或backout
来删除更改。
有关该功能的简单Google搜索:https://www.google.com/webhp#q=histedit+drop