【问题标题】:Removing file from Mercurial MQ Patch从 Mercurial MQ 补丁中删除文件
【发布时间】:2010-03-03 17:39:27
【问题描述】:

我在 Mercurial 中应用了大型 MQ 补丁。发生的事情是我已经完成了 qrefresh 并在我的补丁中包含了我不想包含的文件。有没有办法在不手动编辑的情况下从我的补丁中删除对这些文件的更改?在这种情况下,如果我只是在没有 MQ 的情况下工作,我所要做的就是 hg revert。

【问题讨论】:

    标签: mercurial mercurial-queue


    【解决方案1】:

    应用补丁后:

    hg qrefresh -X [file1] -X [file2] ... -X [fileN]
    

    会取出file1到fileN的补丁。完成后,输入hg status 以验证文件现在被标记为已修改,因此不再是补丁的一部分。

    【讨论】:

    • -X 开关必须位于每个文件名之前。所以要删除 foo 和 bar,请使用 hg qrefresh -X foo -X bar
    • 如果你想从补丁中删除所有文件,而不是删除每个文件,你可以运行hg qrefresh -X '*'。您必须用' 包围* 字符,以防止shell 在mercurial 之前解释。
    • 这个似乎不适用于 Windows 4.8。我使用了-X--exclude,使用了完整的文件名和glob,在引号中,没有它们,没有任何效果。 hg qdiff --stat 原样返回文件列表
    【解决方案2】:

    我认为您可以使用将补丁设置为当前补丁(已应用并位于堆栈顶部),然后使用 hg forgethg qrefresh

    当然hg forget 只是hg remove,不需要额外的选项来避免文件删除。

    【讨论】:

      【解决方案3】:

      执行此操作的最简单方法是对除您要删除的文件之外的所有文件执行hg qrefresh - 这会将更改从补丁中取出而不丢弃它们。

      【讨论】:

        猜你喜欢
        • 2014-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多