Version control 忘记汞和去除汞有什么区别?

Version control 忘记汞和去除汞有什么区别?,version-control,mercurial,Version Control,Mercurial,我希望mercurial从存储库的当前状态中删除几个文件。但是,我希望这些文件存在于以前的历史记录中 忘记和删除有何不同,它们能做我想做的事吗?从文档中,显然可以使用任一命令将文件保留在项目历史记录中。看起来您想要删除,因为它也会从工作目录中删除文件 摘自Mercurial图书,网址: 删除文件不会影响其性能 历史重要的是 请理解删除文件具有以下优点: 只有两种效果。它删除了 中文件的当前版本 工作目录。它停止了反复无常 从跟踪对文件的更改, 从下一次提交时开始。 删除文件不会以任何方式进行 更

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


忘记
删除
有何不同,它们能做我想做的事吗?

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

摘自Mercurial图书,网址:

删除文件不会影响其性能 历史重要的是 请理解删除文件具有以下优点: 只有两种效果。它删除了 中文件的当前版本 工作目录。它停止了反复无常 从跟踪对文件的更改, 从下一次提交时开始。 删除文件不会以任何方式进行 更改文件的历史记录

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

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

这是关于删除的:

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


hg forget
”只是“
hg remove-Af
”的缩写。从“
hg remove
”帮助中:

…和-Af可用于删除文件 从下一个修订版开始 从工作列表中删除它们 目录


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

最好的方法是
hg-forget
hg-remove
相同,只是它将文件留在您的工作副本中。这些文件作为未跟踪的文件留在后面,现在可以选择使用
.hgignore
中的模式忽略它们

换句话说,当我从你身上拔出时,我无法判断你是否使用了
hg-forget
hg-remove
。当我更新到该变更集时,您在上运行的文件将被删除,就像您使用
hg remove

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

  not removing b: file has been marked for add (use forget to undo)
这个回答非常清楚地解释了“删除”和“忘记”之间的区别

我的理解是,
“hg-forget”
用于撤消已添加但未提交的文件,以便版本控制不会跟踪该文件;而
“hg remove”
用于从版本控制中取出提交的文件

这有一个例子,可以对7种不同状态的文件使用
hg remove

可以跟踪文件,也可以不跟踪,您可以使用hg add跟踪文件并 hg删除或hg忘记取消跟踪它。使用hg删除而不删除 标志将删除文件并取消跟踪,hg-forget将 只需取消跟踪它而不删除它


Mercurial 1.3中重新引入了“hg遗忘”,作为“hg移除-Af”的更简单方法。它会安排删除文件,而不会将其从工作副本中删除。很高兴听到这个消息。”remove-Af(以及“remove”帮助页上的整个选项表)是/是疯狂的。@Ry4an:说真的,这太荒谬了。我贡献了重新引入“忘记”的补丁。当我制作它的时候,我意识到-Af在代码中是完全有意义的,但从用户的角度来看,它是完全荒谬的。嘿,这就是mercurial的伟大之处——人们积极地、反复地思考从用户的角度看什么是有意义的。感谢您修复了这个问题。本地生成配置文件或类似文件?不同系统的本地工具路径不同?意外添加了一个您不希望在源代码管理中使用但希望保存的日志文件?我猜是的。别担心,你不能从Mercurial以前的历史记录中删除一个文件——除非你开始使用扩展名,否则历史记录通常是不可变的。我不知道为什么你觉得有必要在这个人自己已经插话的时候加上这句话,但是,嘿,不管你的船怎么漂。