您需要该hg rollback
命令,但如果您使用的是 Mercurial 2.2 或更高版本,请参见下文。
rollback 命令将从您的存储库中删除最后一个事务。提交是一个事务,因此您可以将其用作
% hg commit -m 'My elaburate bugfix.' foo.c foo.h
% hg rollback
% hg commit -m 'My elaborate bugfix.' foo.c foo.h
回滚后,文件将再次被视为已修改,这意味着第二次提交将存储与第一次相同的更改,但提交信息更好。
注意: hg rollback
比简单的“取消提交”功能更强大,如果您不小心,您可以使用它来丢弃工作。扔掉一个提交做
$ hg commit -m 'My big and very difficult bugfix'
$ hg pull --update
$ hg rollback
您现在已经丢失了您所做的最后一次提交,并且由于您将工作副本更新为其他版本,因此该提交中的更改已经消失。hg rollback
因此,如果您确定hg commit
确实是在工作副本上操作的最后一个命令,则应该只使用撤消提交。
此外,如果您没有在命令行上给出提交消息,那么您不能只按两次向上箭头在回滚后重做提交。但是,Mercurial 1.5 及更高版本将保存您的最后一条提交消息,.hg/last-message.txt
以便您在回滚后始终可以再次找到它。
Mercurial --amend
2.2为hg commit
. 这让您可以使用新的更改来修改最后一次提交。它只是将 列出的更改hg status
合并到父提交中,就好像您已回滚并再次提交一样。