首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有办法删除Mercurial中的本地提交?

有没有办法删除Mercurial中的本地提交?
EN

Stack Overflow用户
提问于 2010-02-26 09:43:00
回答 6查看 153K关注 0票数 218

所以我一直在Mercurial中犯一个愚蠢的错误。很多时候,我开始工作时没有做"hg pull“和"hg update”。当我尝试推送我的更改时,我得到一个错误。

听起来很简单,对吧?

同样,我只尝试删除使用"hg“进行的本地提交。我不想修改文件、恢复等。

EN

回答 6

Stack Overflow用户

发布于 2010-02-26 11:09:54

正如其他人所指出的那样,你可能只需要拉出并合并头部,但如果你真的想在没有任何EditingHistory工具的情况下摆脱提交,那么你可以只使用hg clone -r来获得除了这些更改之外的所有更改。

这不会将它们从原始存储库中删除,但会创建一个没有它们的新克隆。

票数 15
EN

Stack Overflow用户

发布于 2010-02-26 10:02:13

你可以使用Rebase extension更容易地绕过这个问题,只需使用hg pull --rebase,你的提交就会自动重新提交到拉出的版本,从而避免分支问题。

票数 9
EN

Stack Overflow用户

发布于 2015-08-14 15:19:43

我也遇到过这个问题。我做了两个commit,想要回滚并删除这两个提交。

$ hg rollback

但是hg rollback只是回滚到最后一次提交,而不是第二次提交。当时我没有意识到这一点,所以我修改了代码。

当我发现hg rollback只回滚了一次提交时,我发现我可以使用hg strip #changeset#。因此,我使用hg log -l 10来查找最新的10个提交,并获得我想要strip的正确的变更集。

$ hg log -l 10
changeset:   2499:81a7a8f7a5cd
branch:      component_engine
tag:         tip
user:        myname<myname@email.com>
date:        Fri Aug 14 12:22:02 2015 +0800
summary:     get runs from sandbox

changeset:   2498:9e3e1de76127
branch:      component_engine
user:        other_user_name<name@email.com>
date:        Mon Aug 03 09:50:18 2015 +0800
summary:     Set current destination to a copy incoming exchange

......

$ hg strip 2499
abort: local changes found

abort: local changes found是什么意思?这意味着hg发现了尚未提交的代码更改。因此,要解决这个问题,您应该使用hg diff保存已更改的代码,并使用hg reverthg strip #changeset#。就像这样:

$ hg diff > /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff
$ hg revert file_you_have_changed
$ hg strip #changeset#

完成上述操作后,您可以对diff文件执行patch操作,并且可以将代码添加回项目中。

$ patch -p1 < /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2338986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档