Mercurial Eclipse插件中的回滚,退出和strip有什么区别?

Mercurial Eclipse插件中的菜单项rollback,backout和strip有什么区别?

我可以删除本地存储库中的提交而无需使用这3个命令之一修改我的工作区中的文件吗?

还是有另一个解决scheme,我可以提交并解决项目的另一部分? 我目前的工作还没有完成,我不能推动它。 但是我必须检查一下项目的另一部分。

我看到的唯一解决scheme是创build第二个工作区。 但是这看起来对我来说太过分了。

这些命令都来自Mercurial本身,并有很多比较/对比的post。 但是,在这里他们是简短的:

  • rollback :一级撤消。 将撤消最后一次拉或提交( 可能是危险的
  • backout :创build与给定提交相反的新提交。 净效应是一个撤销,但改变仍然在你的历史。
  • strip :从历史中删除( 销毁 )更改。 删除变更集也会删除其所有子项,因此只能用于截断历史logging,而不能删除切片。

所有这三个在这里很好描述: http : //www.selenic.com/mercurial/hg.1.html

对于你的问题2,你可以使用strip来删除最近的提交,它不会改变你的工作目录diles。

对于你的问题3,你可以很容易地对这个项目的另一部分进行修改:

 hg commit -m 'commit your half done work' hg update OLDERCHANGESET # your working directory now is without the half-done-work .. do that quickfix ... hg commit -m 'quickfix' hg push tip # this pushes the tip revision (latest) and its ancestors, but the half-don't work isn't an ancestor so it doesn't get pushed hg update HALFDONEWORK # you can find the right revision number using "hg heads" 

这就是所谓的“匿名分支”,这是一个非常常见的工作方式。 你最终提交了半完成的function,但你可以稍后恢复,而不必推送它。

这对匿名分支有很好的解释: http : //steveosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/#branching-anonymously