【问题标题】:Mercurial branching and merging without having to push branchMercurial分支和合并而无需推送分支
【发布时间】:2014-07-09 21:31:06
【问题描述】:

这是我想要做的:

  1. 汞克隆http://www.my_repo.com
  2. hg 分支 new_branch
  3. hg update new_branch # 移动到新分支
  4. 对分支代码进行一些更改
  5. hg commit -m '更改分支 new_branch'
  6. hg update default #移回默认分支
  7. hg merge new_branch # 将 new_branch 合并到默认值中以在默认值中添加更改
  8. hg commit -m '合并'
  9. hg 推

但在这一点上,mercurial 迫使我执行hg push --new-branch 将分支添加到远程存储库。我不想要仓库中的分支,我只想在本地创建一个分支,做我想做的所有更改,然后当我准备好合并时,移动到默认值,拉取和更新默认值(任何其他人可能已经在默认值上添加了更改)并最终将我的分支合并到默认值中,并使 new_branch 消失成为可能,因为一旦它合并到默认值中我就不再需要它了。

我做错了什么,如果你没有注意到,我来自 git。

【问题讨论】:

  • 在反复无常的分支中持续存在。因此,您需要将提交压缩为一个,然后将其挑选到 default

标签: git version-control mercurial


【解决方案1】:

对于您正在做的事情,您需要一个“书签”而不是“分支”。在 Mercurial 中,一个分支称为“命名分支”,每个变更集都位于一个且只有一个命名分支上。该分支名称是提交的一部分并包含在提交的哈希中。当您创建了具有特定分支名称的提交时,如果没有该分支名称,您将无法推送它们(或其后代)。

另一方面,书签只是指向提交的指针。它在提交时向前推进——换句话说,很像 git 所说的分支(把 20 年的术语扔到窗外:)。

在上面的命令中用书签替换分支,一切都会像你想象的那样工作。

【讨论】:

  • 它甚至可以是匿名分支,无需书签(单个任务)
猜你喜欢
  • 2022-11-16
  • 2023-03-27
  • 2012-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 2014-10-15
  • 1970-01-01
相关资源
最近更新 更多