在推送之前丢弃 Mercurial 中的本地分支

Posted

技术标签:

【中文标题】在推送之前丢弃 Mercurial 中的本地分支【英文标题】:Discard a local branch in Mercurial before it is pushed 【发布时间】:2011-10-22 18:54:04 【问题描述】:

很多时候,我在本地 Hg 存储库上几乎没有提交,我不想推送,有时我想完全删除本地分支。但是我不能回滚多个提交,这让我别无选择,只能创建一个新的克隆并再次下载整个存储库。这感觉很愚蠢,因为如果我可以删除无论如何都不会影响远程存储库的本地分支,那么我就不必创建和设置新的克隆。那么,是 Mercurial 中的情况还是有一些方法可以丢弃本地分支?

谢谢!

【问题讨论】:

除了 Remy 的回答之外,另一个有用的提示是在本地存储库的克隆中工作。这样,即使您确实遇到了除了重新克隆别无选择的情况,它也是本地的并且非常快(而不是从远程克隆)。 Also see this Q&A. 这些天我只用git。 【参考方案1】:

我知道为时已晚,但它可能对任何人都有用:

如果你的分支还没有被推送。

第一次回滚更改 hg rollback 仅在您完成提交但 尚未推送 第二次运行hg update --clean 第三次运行hg branch any-existing-branch 第四次运行hg pull -u

【讨论】:

【参考方案2】:

如果您发现自己经常这样做,也许您应该使用书签而不是命名分支。 http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/

【讨论】:

【参考方案3】:

如果启用 mq 扩展(与 Mercurial 捆绑),则可以使用 hg strip。不过要小心,因为这会修改存储库的历史记录。安全的方法是将您的存储库克隆到您要丢弃的分支创建之前的修订版,然后提取您要保留的剩余变更集。

【讨论】:

我最喜欢这个答案的第二部分。 :) 克隆没有那个分支。

以上是关于在推送之前丢弃 Mercurial 中的本地分支的主要内容,如果未能解决你的问题,请参考以下文章

在 Mercurial 中回滚多个提交(在推送到公共之前)

为什么Mercurial在推送数据之前不进行身份验证?

git学习3

将推送的分支恢复为具体的提交

Mercurial摆脱糟糕的合并

是否可以使用bazaar,mercurial或git进行部分克隆/分支?