所以我一直在Mercurial中犯一个愚蠢的错误。很多时候,我开始工作时没有做"hg pull“和"hg update”。当我尝试推送我的更改时,我得到一个错误。
听起来很简单,对吧?
同样,我只尝试删除使用"hg“进行的本地提交。我不想修改文件、恢复等。
发布于 2010-02-26 11:09:54
正如其他人所指出的那样,你可能只需要拉出并合并头部,但如果你真的想在没有任何EditingHistory工具的情况下摆脱提交,那么你可以只使用hg clone -r
来获得除了这些更改之外的所有更改。
这不会将它们从原始存储库中删除,但会创建一个没有它们的新克隆。
发布于 2010-02-26 10:02:13
你可以使用Rebase extension更容易地绕过这个问题,只需使用hg pull --rebase
,你的提交就会自动重新提交到拉出的版本,从而避免分支问题。
发布于 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 revert
和hg 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
https://stackoverflow.com/questions/2338986
复制相似问题