是否有将单个提交(例如,本地存储库中的提示变更集)转换为工作目录中的未提交更改的方法?
我知道hg strip
删除指定的变更集并将其备份,但它是否会将这些变更集转换为工作目录中的未被更改的变更?将已提交的变更集转换为Mercurial中的未提交更改
编辑:的hg rollback
关于使用。
如果在我想要做hg rollback
之前我有未提交的更改怎么办?我必须首先提交这些内容吗?最后几次提交呢?序列号hg rollback
是否将这些提交的更改叠加到现有未提交的更改?
是否有将单个提交(例如,本地存储库中的提示变更集)转换为工作目录中的未提交更改的方法?
我知道hg strip
删除指定的变更集并将其备份,但它是否会将这些变更集转换为工作目录中的未被更改的变更?将已提交的变更集转换为Mercurial中的未提交更改
编辑:的hg rollback
关于使用。
如果在我想要做hg rollback
之前我有未提交的更改怎么办?我必须首先提交这些内容吗?最后几次提交呢?序列号hg rollback
是否将这些提交的更改叠加到现有未提交的更改?
如果你想重做最后一次提交(也许是一个更好的提交信息,也许修正了一个错误),那么你现在应该使用
$ hg commit --amend
更新最后承诺。如下所述,这比使用
hg rollback
安全得多。
如果提交是最后一次提交,你有没有更新任何地方,那么你可以使用hg rollback
。请阅读hg help rollback
- 这是一个潜在的破坏性命令。
它做什么:hg rollback
将回滚您的存储库中的最后transaction。每当你hg commit
,hg pull
,hg unbundle
等,你创建一个新的交易。当一切安全存储后,Mercurial关闭交易。如果交易中出现问题,Mercurial可以恢复(请参阅hg recover
)。您也可以使用hg rollback
手动回滚上次交易。请参阅hg rollback --dry-run
了解该命令将执行的操作。
回滚命令不会触及您的工作副本。这意味着显示为之前修改的文件将再次出现修改。所以很容易做
$ hg commit -m "Fixed buug-123"
Ups,错误在提交消息!让我们来解决这个问题:
$ hg rollback
$ hg commit -m "Fixed bug-123"
(使用hg commit --amend
与替代水银2.2及更高版本。)
最后提交信息也保存在.hg/last-message.txt
这样你就可以从那里恢复它,如果你没有它你的shell历史。
如果在我想要执行hg回滚之前我有无法做出的更改会怎么样?我必须首先提交这些内容吗?
回滚不会触及工作副本。这意味着工作副本中的任何其他更改将与变更集中的更改一起显示。就好像你根本没有输入hg commit。
最后几次提交怎么样?连续hg回滚堆栈是否从提交更改为现有未被更改的更改?
不,你只有one level of rollback因为我们只跟踪最后的交易。
任何变更(或一组变更集)更容易可被转化为局部变化与Mercurial Queues(倍|展开变更)
TortoiseHG-centric manual(旧GUI)显示操作一步一步
虽然你应该尽可能使用hg commit --ammend
我现在更喜欢新的和更强大的mecurial历史编辑功能:hg histedit
特别是如果你熟悉git。
你可以通过简单地做一个hg out
(即你想选择未被推送的版本)来看到你想要返回的版本。
如果在我想要执行'hg rollback'之前我有无限制的更改怎么办?我必须首先提交这些内容吗?最后几次提交呢?连续的'hg rollback'堆栈是否从那些提交改变为现有的未被改动的改变? – 2012-01-18 10:16:12
回滚不会触及工作副本。这意味着工作副本中的任何其他更改将与变更集中的更改一起显示。就好像你没有输入'hg commit'。更改多个提交是另一个主题,请参阅[回滚多个提交](http://stackoverflow.com/q/4925094/110204),也许[更新提交消息](http://stackoverflow.com/a/8503002/110204) 。 – 2012-01-18 10:36:32
值得一提的是,在想要解决提交消息的特定情况下,'hg commit --amend'可能更有用。这是在Mercurial 2.2中添加的,这个答案写完后四个半月。 – 2013-04-19 09:44:11