【问题标题】:Mercurial: qrefresh for select filesMercurial:选择文件的 qrefresh
【发布时间】:2011-07-28 07:13:45
【问题描述】:

假设我已经更改了许多文件,因此当我执行 hg 状态时,它会出现以下内容:

M ../../file1
M ../../file2
M ../../file3

如果我只想对我对 file2 所做的更改执行 qrefresh 并隐式放弃我对 file1 和 file3 所做的更改以使它们恢复到原始状态怎么办?有没有办法用 mercurial 做到这一点?我对整个版本控制还很陌生。

【问题讨论】:

    标签: version-control mercurial


    【解决方案1】:

    由于hg qrefresh 会自动包含所有更改,因此您只需排除某些文件,刷新实际上会将这些文件的所有更改从补丁中删除。然后你就可以恢复文件了。

    这会刷新补丁中除file1file3 之外的所有内容(补丁现在不包含任何更改):

    hg qrefresh -X ../../file1 -X ../../file3
    

    现在file1file3还有一些变化,需要还原:

    hg revert ../../file1 ../../file3
    

    这会将当前版本更改为../../file1.orig../../file3.orig,以防您发现再次需要更改。您也可以添加--no-backup 开关,这些开关不会被创建。

    您也可以按相反的顺序执行此操作:

    hg revert ../../file1 ../../file3
    hg qrefresh
    

    这次刷新不需要参数,因为与工作目录的父级相比,这两个文件没有变化,因此将从补丁中消失(刷新补丁基本上是重新编写补丁)。我会这样做,但我也想演示-X 开关。

    查看hg help reverthg help qrefresh 了解更多信息。

    【讨论】:

    • 也可以hg qrefresh ../../file2
    • 请注意,这会忘记当前补丁中的所有其他文件。
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多