Mercurial(hg)等价于git reset(–mixed或–soft)

什么是一个等效的mercurial命令(或工作stream)

git reset --mixed HEAD^ 

要么

 git reset --soft HEAD^ 

即我想离开工作树完好无损,但获取存储库回到最后一次提交之前的状态。 令人惊讶的是,我没有发现任何有用的东西在stackoverflow或谷歌。

请注意,我无法使用

 hg rollback 

因为我在上次提交后使用HistEdit完成了一些历史重写。

补充说明:经过一些重新devise和历史编辑,我最终以A < – B < – C。 然后我用HistEdit来压缩B和C,得到A < – C'。 现在我想分割提交C'(我​​在B中犯了错误的文件)。 我认为最简单的方法就是将版本库恢复到状态A(从技术angular度来说,从未在版本库中存在,因为之前所有的重新编译和历史编辑)以及工作树状态为C',然后执行两个提交。

正确的方法来复制git reset --soft HEAD^ (撤消当前的提交,但在工作副本中保留更改)是:

 hg strip --keep -r . 

-1只有在你想要删除的提交是最后一次提交时才会起作用。 . 指的是当前签出的提交,这是最接近的相当于Mercurial的Git的HEAD

请注意,如果. 有后代,那些也会被剥夺。 如果你想保持提交,那么一旦你有提交ID,你可以改为:

 hg update .^ hg revert --all -r <commit id> 

这将更新到提交的父级,然后用该提交的版本replace工作副本中的文件。