【问题标题】:What is the difference between hg forget and hg remove?hg forget 和 hg remove 有什么区别?
【发布时间】:2010-11-09 05:26:00
【问题描述】:

我希望 mercurial 从存储库的当前状态中删除几个文件。但是,我希望这些文件存在于以前的历史记录中。

forgetremove 有何不同,它们能做我想做的事吗?

【问题讨论】:

  • 别担心,您无法从 Mercurial 的先前历史记录中删除文件——除非您开始使用扩展,否则历史记录通常是不可变的。

标签: version-control mercurial


【解决方案1】:

从文档中,您显然可以使用任一命令将文件保留在项目历史记录中。看起来您想要删除,因为它还会从工作目录中删除文件。

来自 http://hgbook.red-bean.com/read/ 的 Mercurial 书:

删除文件不会影响其 历史。重要的是要 了解删除文件有 只有两个效果。它删除了 文件的当前版本来自 工作目录。它停止了 Mercurial 从跟踪文件的更改, 从下一次提交开始。 删除文件不会以任何方式 更改文件的历史记录。

手册页 hg(1) 提到了忘记:

标记指定的文件,以便它们 下一次后不再被跟踪 犯罪。这只会从 当前分支,而不是来自 整个项目历史,它确实 不要从工作中删除它们 目录。

关于删除:

安排指定的文件 从存储库中删除。这 只删除当前文件 分支,而不是整个项目 历史。

【讨论】:

    【解决方案2】:

    'hg forget' 只是 'hg remove -Af' 的简写。来自“hg remove”帮助:

    ...和 ​​-Af 可用于删除文件 从下一个版本没有 从工作中删除它们 目录。

    底线:“remove”会从磁盘上的工作副本中删除文件(除非您使用 -Af)而“forget”不会。

    【讨论】:

    • "hg forget" 在 Mercurial 1.3 中重新引入,作为一种更简单的方法来执行 "hg remove -Af"。它安排文件删除而不将其从工作副本中删除。
    • 很高兴听到这个消息。 “删除 -Af”(以及“删除”帮助页面上的整个选项表)是/曾经是疯狂的。
    • @Ry4an:说真的,这太荒谬了。我贡献了重新引入“忘记”的补丁。当我制作它时,我意识到 -Af 在代码中完全有意义,但从用户的角度来看,这完全是荒谬的。
    • 嘿,这就是 mercurial 的伟大之处——人们正在积极地、反复地思考从用户的角度来看什么是有意义的。感谢您修复那个。
    • 本地构建配置文件之类的?本地工具的路径因系统而异?不小心在源代码管理中添加了一个您不想要但想要保存的日志文件?我想它会发生。
    【解决方案3】:

    最好的说法是hg forgethg remove 相同 除了 它将文件留在你的 工作复制。这些文件作为未跟踪文件留下,现在可以选择使用.hgignore 中的模式忽略。

    换句话说,我不知道当我从你那里拉出来时,你使用的是 hg forget 还是 hg remove。当我更新到该变更集时,您在 上运行 hg forget 的文件将被删除,就像您使用 hg remove 一样。

    【讨论】:

      【解决方案4】:

      如果您对状态为“A”的文件使用"hg remove b",这意味着它已添加但未提交,Mercurial 将响应:

        not removing b: file has been marked for add (use forget to undo)
      

      这个响应非常清楚地解释了删除和忘记之间的区别。

      我的理解是"hg forget"是用来撤销一个添加但未提交的文件,这样它就不会被版本控制跟踪;而"hg remove" 用于从版本控制中取出已提交的文件。

      这个thread 有一个使用hg remove 处理7 种不同状态类型文件的示例。

      【讨论】:

        【解决方案5】:

        一个文件是否可以被跟踪,你使用 hg add 来跟踪一个文件并且 hg remove 或 hg 忘记取消跟踪。不使用 hg remove flags 将删除文件并取消跟踪它,hg forget 将 只需取消跟踪而不删除它。

        【讨论】:

        • 我不知道为什么你觉得有必要在这个人自己已经插话的时候加上这句话,但是嘿,不管你的船是什么。
        猜你喜欢
        • 2012-11-25
        • 1970-01-01
        • 2011-05-07
        • 2011-11-29
        • 2010-11-14
        • 2023-03-30
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        相关资源
        最近更新 更多