【问题标题】:How can I fix this bad Merge in Mercurial?如何在 Mercurial 中修复这个糟糕的合并?
【发布时间】:2013-06-11 20:47:43
【问题描述】:

我有这种情况。首先,是的,我知道,我们直接在主干上工作,明天会改变(字面意思)。

这家伙合并了代码并遍历了其他所有人的代码。我想提出1625 REV。有办法吗?我不在乎失去接下来会发生什么,他应该再做一次他的工作。

我正在考虑从 1625 做一个分支。但是如果我以后想与默认值合并会发生什么?我可以只保留新分支中的所有内容吗?

【问题讨论】:

  • 不要对在默认命名分支中工作的每个人做出下意识的反应。改变这一点不会改变发生的事情。分支名称只是一个标签。
  • 无论您选择何种策略,请明确这一点:没有必要因为有人将旧分支合并到主干就丢弃任何东西。这家伙可能违反了您小组的工作流程,但是(假设合并修订的内容很好)就 mercurial 而言,这里没有任何问题。 没有没问题。

标签: mercurial merge branching-and-merging


【解决方案1】:

基本上是这样的:签出好的版本,合并另一个头,恢复到好的版本,提交。

hg up -C <good>
hg merge <bad>
hg revert -r <good> --all
hg resolve -m #if necessary
hg ci -m kill-merge
hg diff -r <good> #should be empty

【讨论】:

  • 那么,我的工作目录在好的 Rev (1625) 中,我合并坏的 (1634)?
  • 是的,您正在合并错误的修订版并将其更改丢弃(还原)
  • 是的,没有什么可合并的:如果将修订 A 与其后代 B 合并,您只会得到 B。
  • 为什么我们需要将好的版本与坏的版本合并?为什么不从hg revert -r &lt;good&gt; --all 开始进行提示(坏)修订?
  • 关于“没有什么可合并的”:我的错。不幸的是,hg 拒绝创建这种合并(尽管它可以被欺骗)。最简单的解决方案是做一些你需要做的小改动,在 之上提交它,然后像我说的那样继续。
【解决方案2】:

试试这个食谱:

  1. 将您的repo 克隆为repo-clone
  2. repo-clone 更新为良好的修订版。
  3. repo 更新为提示修订。
  4. repo 中删除除 .hg 之外的所有内容。
  5. 将除 .hg 之外的所有文件从 repo-clone 复制到 repo
  6. repohg ci -A -m 'Backout bad merges' 中提交。

最后一个命令将添加所有未跟踪的文件并在提交之前忘记所有丢失的文件。使用这个秘籍,您将获得与良好修订版完全相同的工作目录状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    相关资源
    最近更新 更多