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工作副本中的文件。