【问题标题】:How to undo all added files in Mercurial如何撤消 Mercurial 中所有添加的文件
【发布时间】:2013-03-18 02:29:33
【问题描述】:

假设我在 Mercurial 中键入 hg add,我的工作目录中有一堆未被忽略的未跟踪文件。在不明确键入每个文件的名称的情况下取消添加所有这些文件的最简单方法是什么?

我可以用一个命令将它们全部取消添加吗?

【问题讨论】:

标签: mercurial add undo


【解决方案1】:

您总是可以重新克隆您的存储库,然后将工作文件夹中的 .hg 目录替换(删除现有的然后复制新的)与来自新克隆的目录...(假设您没有待处理的提交... )

【讨论】:

  • 这在理论上似乎可行,但可能容易出错。我想如果你有大量的本地更改不想在新的克隆中手动复制,这可能是最好的选择。无论如何,创意解决方案!
【解决方案2】:

前言

您必须始终提出问题,其中包含尽可能多的信息。因为现在你的问题,根据某些情况,可能有完全不同的答案。

案例一 - 没有对已版本化文件进行本地修改,只添加(而不是提交)文件

hg revert 会将你的工作目录返回到最后一次提交后的状态,撤消它的所有更改。

案例一 - 本地编辑,您希望保存并偶尔添加文件

  1. 了解 Mercurial 中的文件集。
  2. hg forget 命令中使用文件集,例如hg forget "set:added()"

【讨论】:

    【解决方案3】:

    在文件上使用hg reverthg forget(对您在hg add 上运行的文件执行相同的操作)。为避免输入文件名,您可以像这样使用fileset

    $ hg revert "set:added()"
    

    这会将文件恢复到它在工作副本父修订版中的样子,即它将再次变得未知。

    【讨论】:

    • 嗨,马丁。大概这比 hg revert -a 更精致,这也会恢复对现有文件的更改,对吗?
    • @FaheemMitha 是的,没错。
    【解决方案4】:

    hg revert -r .^ path-to-file 将从提交集中恢复提交。 然后提交并提交(如果使用果冻鱼),您将看到从变更集中删除的文件。我不知道为什么 .^ 还有效,但可能有人会知道。

    【讨论】:

    • 您好。您的帖子更像是评论。请添加更多详细信息或将其删除。
    猜你喜欢
    • 2011-09-05
    • 2018-03-16
    • 2017-03-02
    • 1970-01-01
    • 2015-08-12
    • 2013-05-07
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多