删除 Mercurial 中的分支但保留更改?
Remove branches in Mercurial but keep changes?
我刚刚发现我们不应该在本地 Mercurial 存储库中创建命名分支,因为它们会被带走并推送到上游存储库,在那里它们永远存在。
不幸的是,我的本地仓库中已经有多个功能分支,我已经准备好将它们合并到 default
并推送到主仓库。所以,我需要做的是(以某种方式)将工作保留在这些分支中,但删除命名的分支。
有没有办法做到这一点,缺少大量可怕的手册revert/cut/paste?
使用 TortoiseHg:
(确保在文件 -> 设置 -> 扩展中启用变基扩展)
- 更新到指定分支的第一个更改集的父级。
- 右键单击 nambed 分支的第一个更改集,然后单击 rebase。
- 确保 "Keep orignal branch names (--keepbranches)" 未 检查。
- 确保"Rebase entire source branch (-b/--base)"已选中。
- 点击变基。
另一种方法是使用 hg convert
命令(标准扩展)和 the branchmap option.
对于私有存储库或至少一个具有尚未发布的变更集的存储库,这可以正常工作,即使像变基一样它会修改历史记录。
与使用 rebase 相比的一个优点是它可以用于同时处理多个分支(命名或未命名)。如果有很多东西要移动,那可能会更快/更容易。
第二个优点是,由于 convert
将创建一个新的存储库,因此如果某些内容无法按预期工作,则不会对原始存储库造成风险。 (当然,在使用 rebase 时,您可以先进行备份,我认为这是一个合理的预防措施。)
我刚刚发现我们不应该在本地 Mercurial 存储库中创建命名分支,因为它们会被带走并推送到上游存储库,在那里它们永远存在。
不幸的是,我的本地仓库中已经有多个功能分支,我已经准备好将它们合并到 default
并推送到主仓库。所以,我需要做的是(以某种方式)将工作保留在这些分支中,但删除命名的分支。
有没有办法做到这一点,缺少大量可怕的手册revert/cut/paste?
使用 TortoiseHg:
(确保在文件 -> 设置 -> 扩展中启用变基扩展)
- 更新到指定分支的第一个更改集的父级。
- 右键单击 nambed 分支的第一个更改集,然后单击 rebase。
- 确保 "Keep orignal branch names (--keepbranches)" 未 检查。
- 确保"Rebase entire source branch (-b/--base)"已选中。
- 点击变基。
另一种方法是使用 hg convert
命令(标准扩展)和 the branchmap option.
对于私有存储库或至少一个具有尚未发布的变更集的存储库,这可以正常工作,即使像变基一样它会修改历史记录。
与使用 rebase 相比的一个优点是它可以用于同时处理多个分支(命名或未命名)。如果有很多东西要移动,那可能会更快/更容易。
第二个优点是,由于 convert
将创建一个新的存储库,因此如果某些内容无法按预期工作,则不会对原始存储库造成风险。 (当然,在使用 rebase 时,您可以先进行备份,我认为这是一个合理的预防措施。)