我正在开发一个集中式Web应用程序,我有一个集中的Mercurial存储库。
本地我在我的存储库中创建了一个分支
hg branch my_branch
然后我做了一些改变并做出了承诺。然后,当我尝试推动时,我得到了
abort: push creates new remote branch 'my_branch'!
(did you forget to merge? use push -f to force)
我刚刚使用push -f。这不好吗?我希望在我的中央远程存储库中有多个分支,因为我想1)备份我的工作,2)允许其他开发人员在我的分支上与我一起开发。
在我的远程存储库中有分支是不是很糟糕?我不应该做推-f(如果没有,我该怎么办?)? Joel为什么在他的教程中这样说:
alt text http://grabby.info/3c0370f58efd4da29ad651cec9c14750.png
偶尔我在分支中进行了更改,推送,切换到另一个分支,我在切换到的那个分支中所做的更改被神秘地恢复到几个提交之前的先前版本。也许这是迫使推动的症状?
答案 0 :(得分:4)
我怀疑有更多时间的人可以更好地回答,但这里有一些我发现的相关内容:
https://www.mercurial-scm.org/wiki/TipsAndTricks#Prevent_a_push_that_would_create_multiple_heads
它与一个不同的选项(特别是破坏push -f)有关,但是它提到了你所要求的内容:
虽然普通的'hg push'会警告你,如果你要创建新的头,这只是客户端的一个警告,旨在帮助/提醒用户他们可能忘记了首先合并。
假设这是一个准确的陈述,那么你完全可以安全。
但请注意,我只掌握Mercurial的基本知识,所以不应该用作完整真理的来源:)。
答案 1 :(得分:4)
不,在创建新分支时强制推送也不错。发出错误/警告是因为新分支导致存储库具有两个拓扑头。也就是说,现在有两个没有子项的变更集:默认分支的提示和新分支的提示。
使用Mercurial 1.6(将在两周内发布),您将可以
hg push --new-branch
允许创建新的远程分支。这更安全,因为--force
禁用所有安全防护,而--new-branch
仅允许您创建新分支。