为什么我无法将此更改推送到我的“主”mercurial代码库?

49

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

我有一个名为“main”的仓库,我已经克隆了它(“clone”),两者都在我的本地机器上。它们完全同步。

我决定尝试使用命名分支,所以下一次在我的“clone”上提交时,我将其放在了名为“case1212”的分支下,虽然它似乎已经正确处理了我的克隆提交,但我无法将这些更改推回到“main”。出现的错误是:

abort: push creates new remote branch 'case1212'!

这似乎表明我需要先合并?但是我应该在“克隆”存储库上合并什么?当我尝试从“main”拉取时,没有更改。

我相当确定我实际上希望它在我的“main”存储库中创建一个远程分支,以便从中更新的人可以看到那个分支。

3个回答

50

Mercurial的默认行为防止您创建远程分支。如果您要这样做,需要强制推送(force-push)。

在您展示的窗口中的同步菜单中,有一个选项用于强制推送。


最佳实践不是将远程更改合并到本地,然后再推送吗? - gcb
4
有时候你真的需要在服务器仓库上创建一个新的分支,这样别人就能看到并使用它。但如果只是因为你还没有将别人的更改合并到本地而导致有不同的代码分支存在,那么是应该在推送之前先进行合并,这样就不需要强制推送了。 - Rory

24

乌龟Git现在有一个选项推送新分支,可能比强制拉取或推送更安全。命令行工具有一个标志--new-branch。

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


9
可以的,我会尽力将其翻译成通俗易懂的中文,不改变原意。以下是需要翻译的内容:It does and I make good use of it! I hate having force push left on permanently, just feels a bit like running linux as root all the time.它确实有这个功能,而且我在好好地利用它!但我不喜欢永久开启 force push,感觉有点像一直以 root 用户身份运行 linux。 - Neil Trodden

19

这是在警告您的推送将创建新的远程分支。如果您已经知道了这一点,并且确定要这样做,您可以使用 push -f 命令进行推送。

设置这个检查是为了避免将特定分支推送回主服务器。如果您不希望将case1212分支推送到主服务器上,您可以使用 hg push -r default 命令来取消警告并避免将case1212分支推送到服务器上。

完成对case1212分支的推送后,由于case1212已经存在,因此您不会再看到这个警告。

较新版本的mercurial会在新建分支时将这个警告变得不那么吓人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接