我正在研究BRANCH_A。我想将此分支上的最后50个提交移动到新分支BRANCH_B,并在此之前将BRANCH_A恢复到之前的提交。实现同样目标的最佳方法是什么?这是一个好方法吗?
答案 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)
无需编辑历史记录,只需: