重命名hg分支并移植选择性更改

时间:2014-07-11 12:01:10

标签: mercurial tortoisehg

我正在研究BRANCH_A。我想将此分支上的最后50个提交移动到新分支BRANCH_B,并在此之前将BRANCH_A恢复到之前的提交。实现同样目标的最佳方法是什么?这是一个好方法吗?

2 个答案:

答案 0 :(得分:0)

假设您只是希望BRANCH_A处于" HEAD - 50提交状态"你不关心这些提交是否出现在历史中,那么这是一个简单的解决方案:

要在新分支BRANCH_B上进行所有提交,您只需在BRANCH_A的HEAD处创建此分支:

$ hg branch BRANCH_B

要恢复BRANCH_A上的先前状态,您可以切换回BRANCH_A的HEAD,并提交一个新的变更集,撤消所有您不想要的变更集,这是通过hg backout完成的:

$ hg update BRANCH_A
$ hg log -r 'branch(BRANCH_A) and head()~50 and not merge()'
$ hg backout -r 'branch(BRANCH_A) and head()~50 and not merge()'
$ hg commit -m"removed from .. to .."

如果类似区域发生变化,您可能会遇到冲突。

如果您确实想要重写历史记录,可以使用rebase或转换扩展名来更改名称,删除提交等。这完全取决于您是仅在本地工作还是需要推送到由其他人也是(在这种情况下,不建议重写历史)。

答案 1 :(得分:0)

无需编辑历史记录,只需:

  1. 关闭BRANCH_A的提示。
  2. 在BRANCH_A的封闭提示下创建一个名为BRANCH_B。
  3. 从50个提交之前的节点开始检入对BRANCH_A的新提交。
  4. TortoiseHg image of the idea, with one commit representing the "50"