【问题标题】:Mercurial - multiple heads blocking push because named branch was done mid-streamMercurial - 多个头阻止推送,因为命名分支是在中途完成的
【发布时间】:2012-08-06 20:18:52
【问题描述】:

我从默认(唯一)分支克隆了存储库。做了很多工作,有很多提交。我最终想将当前的更改作为单独的开发流推送回存储库。所以我做了一个 hg 分支 8-2-。拉取当前在存储库中的内容(仍然只有默认分支)。合并对我的东西的更改。 现在,当我尝试执行 hg push --new-branch 时,仍然会收到多头警告:

中止:推送创建新的远程头 57550f12d0f6! (你忘了 合并?使用 push -f 强制)

做了一个hg头:

变更集:132:8ab701e45e38 分支:8-2- 标签:tip 父级:131:3f2c30e8396d 父级:129:a45e28d1ef1b 用户:
万斯·内夫日期:8 月 6 日星期一 14:55:14 2012-0400总结:合并意外头部

变更集:129:a45e28d1ef1b 用户:Vance Neff 日期:2012 年 8 月 2 日星期四 14:15:08 -0400 摘要:为变更集 7d88ac157486 添加了标签 8-1-29

变更集:113:57550f12d0f6 用户:Vance Neff 日期:2012 年 8 月 2 日星期四 18:29:32 -0400 摘要:为变更集 4ab1691d7120 添加了标签 8-2-29

我看到有问题的 head 是在我执行 hg 分支 8-2-,变更集 113 之前的最后一次提交。

我该如何解决这个问题?注意:我已经阅读了所有关于在这里使用命名分支的警告。太晚了。

谢谢万斯

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    我无法确切地看到您在那里做了什么以及您的存储库的当前状态,但看起来您需要将 default 上的两个变更集合并在一起。

    hg update 129
    hg merge 113
    hg commit -m "merge"
    

    之后,您将再次在default 上只有一个头,一切都很好。

    或者,您可以使用strip 命令删除所有出错的(未推送的)更改。然后你可以重做它们。请注意,请确保仅删除出现在 hg outgoing 中的变更集,以免删除任何公共变更集。

    提示:当我对即将运行的命令没有信心时,我通常会在执行之前对存储库进行克隆或复制,这样我总是可以轻松恢复到原始状态。 DVCS 的祝福之一:)。

    【讨论】:

    • 如果我执行建议的更新,请合并并提交。我应该能够执行 hg push --branch branchname --new-branch branchname 而且我只需要确保每当我从这个存储库推送时我总是指定“-branch branchname”以避免更改已发布(默认分支)版本。
    • 作为后续,我执行 hg update branchname,然后执行 hg merge 133 以检索我在新开发流中所做的更改。请注意,当我指出分支名称时,我实际上使用了“8-2-”。现在我可以使用“hg push --branch 8-2- --new-branch 8-2-”或者我可以使用“hg push --branch .--new-branch 8-2-”。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 2010-12-10
    相关资源
    最近更新 更多