所以我在Mercurial中犯了一个愚蠢的错误.很多时候,我会在没有做"hg pull"和"hg update"的情况下开始工作.当我尝试推送我的更改时,出现错误.
有没有办法删除我的本地提交,所以我可以避免创建多个头,分支等?我只想删除我的本地提交,将我的更改与提示合并,然后重新提交.听起来很简单吧?我似乎无法找到任何方法轻松删除本地提交,所以我可以干净地合并提示.
我再次尝试删除使用"hg ci"进行的本地提交.我不想修改文件,还原等.
Sam*_*rsa 238
启用" strip "扩展并键入以下内容:
hg strip #changeset# --keep
Run Code Online (Sandbox Code Playgroud)
#changeset#要删除的变更集的哈希值在哪里.这将删除所述变更集,包括从其下降的变更集,并将保持您的工作目录不变.如果您还希望还原已提交的代码更改,请删除该--keep选项.
有关更多信息,请查看Strip Extension.
如果你得到"未知命令'strip'",你可能需要启用它.为此,请找到.hgrc或Mercurial.ini文件并添加以下内容:
[extensions]
strip =
Run Code Online (Sandbox Code Playgroud)
注意(正如Juozas在他的评论中提到的)具有多个头部是Mercurial中的正常工作流程.你不应该使用strip命令来对抗它.相反,您应该将头部与传入头部合并,解决任何冲突,测试,然后推送.
strip当您真的想要摆脱污染分支的变更集时,该命令很有用.事实上,如果你处于这个问题的状态并想要永久地完全删除所有"草稿"变更集,请查看最佳答案,这基本上建议:
hg strip 'roots(outgoing())'
Run Code Online (Sandbox Code Playgroud)
Eli*_*iuX 99
如果你正在使用Hg Tortoise,只需激活扩展名" strip ":
- 文件/设置/扩展/
- 选择条带
然后选择要开始条带化的底部修订,通过执行right click操作,然后选择:
- 修改历史记录
- 跳闸
像这样:

在这个例子中,它将从第19个修订版删除到最后一个修订版(22).
Ry4*_*ase 15
正如其他人都指出你应该只是拉动然后合并头部,但是如果你真的想要在没有任何EditingHistory工具的情况下摆脱你的提交,那么你可以只用hg clone -r你的仓库获得除了那些变化之外的所有.
这不会将它们从原始存储库中删除,但会创建一个没有它们的新克隆.然后你可以删除你修改过的仓库(如果你愿意的话).
我也遇到过这个问题.我做了2 commit并想要回滚并删除两个提交.
$ hg rollback
Run Code Online (Sandbox Code Playgroud)
但hg rollback只是回滚到最后一次提交,而不是2次提交.那时我没有意识到这一点,我改变了代码.
当我发现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
Run Code Online (Sandbox Code Playgroud)
什么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#
Run Code Online (Sandbox Code Playgroud)
完成上述操作后,您可以patch将diff文件和代码添加回项目中.
$ patch -p1 < /PATH/TO/SAVE/YOUR/DIFF/FILE/my.diff
Run Code Online (Sandbox Code Playgroud)
小智 5
hg strip就是你要找的。这类似于git reset您熟悉 git。
使用控制台:
您需要知道修订号。hg log -l 10. 此命令显示最近 10 次提交。找到您正在寻找的提交。您需要来自变更集行的 4 位数字changeset: 5888:ba6205914681
然后hg strip -r 5888 --keep。这将删除提交的记录,但保留所有文件的修改,然后您可以重新提交它们。(如果你想删除文件只删除 --keephg strip -r 5888
| 归档时间: |
|
| 查看次数: |
132413 次 |
| 最近记录: |