【问题标题】:Mercurial delete file during merge合并期间的 Mercurial 删除文件
【发布时间】:2012-02-21 09:45:49
【问题描述】:

我有一个名为“developing”的分支,有一个特定状态的文件,版本号为 500,其中包含 a.java 和 b.java。

步骤 - a.java 已从开发中删除,然后被推送 (501)。 - 从 501 创建一个名为 (my_branch) 的分支; - 在 my_branch 中,我添加了新版本的 a.java 和新文件 c.java;

问题 当我尝试将 my_branch 与开发中合并时,mercurial 删除 a.java。结果是带有 b.java 和 c.java 的 my_branch;

我认为 mercurial 知道以前删除了 a.java 并且在不提示警告的情况下删除该文件,即使我在 my_branch 中再次添加。

如何强制合并 my_branch 的文件?

【问题讨论】:

    标签: mercurial merge


    【解决方案1】:

    我刚刚尝试了描述的场景。 mercurial 不会删除以前删除文件的新版本。

    重现步骤:

    • 创建新的 hg 存储库
    • 创建新文件 a.txt,提交更改 - 版本 1
    • 删除文件 a.txt,提交更改 - 版本 2
    • 创建文件 b.txt,提交更改 - 版本 3
    • 更新到版本 2,由 hg update -C 2
    • 再次创建新文件 a.txt,提交更改(创建新头)

    合并两个磁头会产生文件 a.txt 和 b.txt

    【讨论】:

      【解决方案2】:

      我支持@bbaja42,您的描述中缺少一些细节——这在正常使用中不会发生。

      也就是说,这很容易解决 - 只需在提交合并之前放置您想要的文件 - 在 Mercurial 中始终手动提交合并。

      hg update my_branch
      hg merge developing
      hg revert -r my_branch a.java
      hg add a.java # might be unnecessary, but it can't hurt
      hg commit -m 'committed the merge with a.java from my_branch in place'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-26
        • 1970-01-01
        相关资源
        最近更新 更多