有没有办法在Mercurial中删除本地提交?
所以我一直在Mercurial中犯了一个愚蠢的错误。 很多时候,我会开始工作而不进行“hg pull”和“hg update”。 当我尝试推送更改时,出现错误。
有没有办法删除我的本地提交,所以我可以避免创建多个头,分支等? 我只想删除我的本地提交,使用提示合并我的更改,然后重新提交。 听起来很简单,对吧? 我似乎无法找到任何方法轻松删除本地提交,所以我可以干净地合并提示。
再次,我只是试图删除用“hg ci”进行的本地提交。 我不想修改文件,还原等。
启用“ mq ”扩展名并输入以下内容:
hg strip #changeset#
其中#changeset#
是要删除的变更集的散列。 这将删除所述变更集, 包括从其下降的变更集。
有关更多信息,请查看Strip Strip。
如果你得到“未知命令”strip,你可能需要启用它。 为此,请查找.hgrc
或Mercurial.ini
文件并将以下内容添加到该文件中:
[extensions]
mq =
请注意,(正如Juozas在他的评论中提到的)具有多个头部是Mercurial中的正常工作流程。 你不应该使用strip命令来对付它。 相反,你应该把你的脑袋和脑袋合并,解决任何冲突,测试,然后推。
当您真的想摆脱污染分支的变更集时, strip
命令很有用。 事实上,如果你在这个问题的情况下,你想彻底删除所有“草稿”变更集,请检查最基本的建议是:
hg strip 'roots(outgoing())'
如果您正在使用Hg乌龟,只需在以下位置激活扩展名“ mq ”:
然后从您想要开始分条的地方选择底部修订版,方法是right click
它并选择:
像这样:
在这个例子中,它将从第19个修订版删除到最后一个已提交的(22)。
正如其他人都指出你应该拉动然后合并头部,但是如果你真的想在没有任何EditingHistory工具的情况下摆脱你的提交,那么你可以只hg clone -r
你的repo以获得除了那些改变之外的所有内容。