dra*_*vic 1 version-control mercurial dvcs
有没有办法将单个提交(例如我的本地存储库中的tip更改集)转换为工作目录中未提交的更改?
我知道hg strip删除指定的变更集并将其备份,但它是否将这些变更集转换为工作目录中的未更改变更?
编辑:
关于使用 hg rollback.
如果我想要做之前有未提交的更改怎么办hg rollback?我必须先付款吗?最后几次提交怎么样?顺序hg rollback堆栈是否会从这些提交更改为现有的未提交更改?
如果您正在尝试重做最后一次提交(可能有更好的提交消息,可能修复了一个错误),那么您现在应该使用
$ hg commit --amend更新上次提交.这比使用
hg rollback如下所述更安全.
如果提交是最后一次提交而您没有在任何地方更新,那么您可以使用hg rollback.请阅读hg help rollback- 这是一个潜在的破坏性命令.
它的作用:hg rollback将回滚存储库中的最后一个事务.每次hg commit,hg pull,hg unbundle,等,为您创造一个新的事务.当一切都安全存储后,Mercurial会关闭交易.如果在交易过程中出现问题,Mercurial可以恢复(请参阅参考资料hg recover).您也可以手动回滚最后一个事务hg rollback.请参阅参考资料hg rollback --dry-run以获取该命令的功能.
回滚命令不会触及您的工作副本.这意味着之前显示为已修改的文件将再次显示为已修改.所以很容易做到
$ hg commit -m "Fixed buug-123"
Run Code Online (Sandbox Code Playgroud)
Ups,提交消息中的拼写错误!我们来解决这个问题:
$ hg rollback
$ hg commit -m "Fixed bug-123"
Run Code Online (Sandbox Code Playgroud)
(改用hg commit --amendMercurial 2.2及更高版本.)
最后一次提交消息也会保存在,.hg/last-message.txt因此如果您在shell历史记录中没有它,则可以从那里恢复它.
如果我想要进行hg回滚之前有未完成的更改怎么办?我必须先付款吗?
回滚不会触及工作副本.这意味着工作副本中的任何其他更改将与变更集中的更改一起显示.这就好像你根本没有输入hg commit.
最后几次提交怎么样?顺序hg回滚是否会将这些提交的更改堆叠到现有的未提交的更改中?
不,您只有一级回滚,因为我们只跟踪最后一笔交易.