【发布时间】:2017-11-01 18:21:32
【问题描述】:
我发现很多关于重命名已经被其他人推/拉的 hg 分支的问题,但是我在这里遇到了一种情况,即已经在一组分支(总共 10 个)上完成了工作“错误”的名称 - 在 repo(在 bitbucket.org 上)对分支命名有限制的意义上是错误的。
任何开发人员都可以打开一个名为 app-feature-xxxx 的新分支(其中 xxxx 可以是任何东西),但是新开发人员已经完成了大量工作,并且没有一个分支遵循这种命名模式(这些分支实际上是xxxx 部分没有app-feature- 前缀)
目前这些分支只在他的机器上知道——它们从未被推送到 BitBucket.org,也没有被其他任何人拉取
它们可以在被推送之前就地重命名吗?现在 hg 正在尝试使用这些分支名称将他的历史记录提交给 BitBucket,但它失败了。如果可以在此之前重命名分支,那么一切都应该是金色的。而且没有通常的“但是其他人的历史呢?”问题,因为只有一个人有这些提交..
我现在能想到的最简单的方法是再次克隆 repo,只需创建一个 app-feature-lotsofupdates 分支,然后在原始 repo 中继续切换工作副本,并使用 diff 工具应用从原始仓库(名称错误)到这个新克隆的仓库的代码,在每次 diff/copy 之后提交 - 有效地将所有各种功能手动合并到一个分支中(然后将合并到生产中)
【问题讨论】:
-
您可以使用the Convert extension 更改附加到提交的分支名称。这确实需要将 repo 发送到另一个 repo,因此使用它的最简单方法是将“坏” repo 一次性转换为新的“好” repo,然后从那里推送,而不是反复转换回来和第四次(尽管后者也是可能的)。
-
如果没有解决,请评论,我通常会以更手动的方式解决这个问题。
-
如果分支不包含合并(基本上是直线变更集),您可以使用
mq扩展和hg qimport分支变更集到补丁中,hg qpop --all删除它们,@ 987654328@和hg qpush --all重新添加补丁;否则,convert扩展可能是唯一的方法。 -
您可以使用 rebase 扩展将提交从一个分支移动到另一个分支。