【问题标题】:Why can't I push this change to my 'main' mercurial repository?为什么我不能将此更改推送到我的“主”mercurial 存储库?
【发布时间】:2010-03-02 18:01:36
【问题描述】:

我正在尝试了解 Mercurial,希望我只是在这里感到困惑!

我有一个我已经克隆('clone')的存储库('main'),都在我自己的机器上。两者完全同步。

我决定使用命名分支,所以下次我在“克隆”上提交时,我在分支名称“case1212”下进行了操作,虽然它似乎已经正确处理了我的克隆上的提交,但我无法推送这些变化回到“主要”。给出的错误是:

abort: push creates new remote branch 'case1212'!

...这表明我可能需要先合并?我应该在那个“克隆”存储库上合并什么?当我尝试从“主”中提取时,没有任何变化。

我很确定我真的希望它在我的“主”存储库中创建一个远程分支,以便从它更新的人可以看到该分支。

【问题讨论】:

    标签: mercurial branch tortoisehg


    【解决方案1】:

    Mercurial 的默认行为会阻止您创建远程分支。如果你想这样做,你需要强制推送。

    在你显示的窗口中同步菜单,有强制推送的选项。

    【讨论】:

    • 在本地合并远程更改然后推送不是最佳做法吗?
    • @gcb 有时您真的希望在服务器存储库上建立一个新分支,以便其他人可以查看和使用。但是如果它只是一个单独的头部,因为你没有在本地合并其他人的更改,那么是的,你应该在推送之前合并,然后你不需要强制推送。
    【解决方案2】:

    乌龟现在有一个选项Push new branch,它可能比Force pull or push 更安全。命令行工具有一个标志 --new-branch。

    更新:新的乌龟界面使其更难找到。切换到同步视图,然后单击选项并选择允许推送新分支。

    【讨论】:

    • 确实如此,我很好地利用了它!我讨厌永久保留强制推送,感觉有点像一直以 root 身份运行 linux。
    【解决方案3】:

    它警告您,您的推送会创建新的远程头(在这种情况下是分支)。如果您对此感到满意,并且听起来不错,您可以使用push -f 推送。

    这里有这个检查,所以如果您希望 case1212 分支不返回主服务器,您可以执行hg push -r default,然后您将看不到此警告并且不发送 case1212。​​

    为 case1212 完成此操作后,您将不会再看到警告,因为 case1212 已经存在。

    新版本的 mercurial 使警告在新头是新分支的情况下听起来不那么可怕。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 2010-10-06
      相关资源
      最近更新 更多