我创建了各种各样的分支,因为它们无处可去.其中一个分支叫做v2.它在过去的某个时间关闭了.
当进一步发展时,我创建了另一个分支也称为v2.Tortoise Hg警告我,这个分支已经存在,我是否想"重启"或"承诺当前分支".我要求重新启动它.
更多开发发生在v2(几个提交)上,我决定推送到已经拥有我的项目的远程存储库(包括之前关闭的v2).然后我收到消息
abort: push creates new remote head fce4441f5150 on branch 'v2'!
hint: merge or see "hg help push" for details about pushing new heads
Run Code Online (Sandbox Code Playgroud)
我真的不想合并(我假设消息的意思是"将旧的v2与新的合并v2"),因为这些分支没有太多共同之处.我关闭了v2,而不是因为我不想再使用它了.(关于重用名称的自我鞭打在问题的后面出现,不用担心)
这让我有了新的头脑.hg outgoing向我展示了我期望发生的事情......
# this is the first commit for the new v2
changeset: 221:ba47b76010ef
branch: v2
user: w <w@home>
date: Fri Jul 18 14:42:08 2014 +0200
summary: New version: all frames are subclasses, frames are organiz
# some more commits for the new v2
# last commit for the new v2
changeset: 225:fce4441f5150
branch: v2
tag: tip
user: w <w@home>
date: Wed Jul 23 13:17:19 2014 +0200
summary: added manualstart.sh
Run Code Online (Sandbox Code Playgroud)
...但是v2(旧的,已关闭的)已存在于存储库中:

从现在开始我应该去哪儿?
--force参数,因为它让我在过去花了很多咒骂.我想确保这次没问题.总的来说,我了解到重用以前关闭的分支并不是一件好事,这是正确的吗?或者我可以采取一些预防措施吗?
你是对的,重复使用分支名称并不是一件好事。
我看到有两种方法可以实现您的需求 - 它们都不是真正的“好”。
1)您已经提到了 -f 选项。如果您害怕推动多个头,请尝试分步骤推动:
hg push -r <close commit of old branch>
hg push -r <parent of 221>
hg push -f -r 221 --new-branch
hg push
Run Code Online (Sandbox Code Playgroud)
2)另一种选择是从旧分支到新分支进行No-Op-Merge。
hg update -C 221
hg merge v2
hg revert -a -r 221
hg commit -m "old is marked as commited"
Run Code Online (Sandbox Code Playgroud)
但请注意,这可能会导致将来的合并出现问题,因为旧 v2 中的所有更改都被标记为已合并,即使它们来自侧分支或类似分支。
| 归档时间: |
|
| 查看次数: |
7560 次 |
| 最近记录: |