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