我们如何在做hg pull时删除临时历史记录?

时间:2012-10-15 13:14:20

标签: mercurial history pull

如果我想将更改从本地分支拉到我的主流分支,并且不希望主分支中的本地分支的临时变更集历史记录。我们怎么做?

2 个答案:

答案 0 :(得分:0)

  1. 您无法在推送至服务器
  2. 上重写变更集历史记录
  3. 您可以在推送
  4. 之前在本地存储库中重写本地历史记录
  5. 您可以执行部分​​推送并仅发送特定分支hg push -b ...,而不是整个回购
  6. 合并1-3意味着

    • 你必须拥有新的,独立的可分支分支
    • 您将合并到此分支并折叠其历史记录(MQ补丁,添加扩展名:histedit | collapse)
    • 仅推送此分支

答案 1 :(得分:0)

因为在推送时不可能省略更改集,你可以尝试这个解决方案,它根本不清楚,但你可以这样做。想象一下你的本地hg日志:

  • 5:top(您希望在主分支中拥有此变更集)
  • 4 :(本地变更集)
  • 3 :(本地变更集)
  • 2 :(本地变更集)
  • 1:更改已设置在主分支中的内容,并且应该是从本地
  • 新推送的变更集的父级

如果我有这个问题,我会更新为1,然后将所有更改从5恢复(所以我将工作目录与5相同)然后暂时提交(6),这暂时提交(与变更集5相同)我会推进主力。在您的本地,您可以合并5和6并继续,但总会有从您的本地到主要的外向更改集。命令看起来像这样:

  1. hg up 1
  2. hg revert -r 5 -a (现在你的工作目录与5相同)
  3. hg ci -m“将在主分支中显示的提交名称”
  4. hg push -r 6 main_branch_path
  5. 但正确的解决方案是,正如我们以这种方式使用它,将所有的开发变更集保持在主要位置。 HTH