hg忘记和hg remove有什么区别?

我希望mercurial从存储库的当前状态中删除几个文件。 不过,我希望这些文件在之前的历史中存在。

如何forgetremove不同,他们可以做我想要的?

' hg forget '只是' hg remove -Af '的简写。 从' hg remove '帮助:

…和-Af可用于从下一个修订版本中删除文件,而不从工作目录中删除它们。

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

最好的方法是hg forget hg remove 相同只不过它将文件留在工作副本中。 这些文件被留下作为未跟踪的文件,现在可以select使用.hgignore的模式忽略。

换句话说,当我从你身上拉下来的时候,我不知道你是用hg forget还是hg remove 。 当我更新到变更集时,您运行hg forget文件被删除 – 就像您使用hg remove

从文档中,您可以明显地使用任一命令将文件保存在项目历史logging中。 看起来像要删除,因为它也从工作目录删除文件。

http://hgbook.red-bean.com/read/上的Mercurial书:;

删除文件不会影响其历史logging。 理解删除文件只有两个效果是很重要的。 它从工作目录中删除当前版本的文件。 它会阻止Mercurial跟踪下次提交时的文件更改。 删除文件不会以任何方式改变文件的历史logging。

手册页hg(1)这样说忘记了:

标记指定的文件,以便在下一次提交后不再跟踪它们。 这只会从当前分支中删除文件,而不是从整个项目历史logging中删除,并且不会从工作目录中删除它们。

而这个关于删除:

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

如果您对“A”状态的文件使用"hg remove b" ,表示已经添加但未提交,则Mercurial将响应:

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

这个回应是一个非常清楚的解释和忘记之间的区别。

我的理解是, "hg forget"是为了撤消一个添加但没有提交的文件,以便它不被版本控制跟踪; 而"hg remove"则是从版本控制中取出一个提交的文件。

这个线程有一个使用hg remove来处理7种不同types的文件的例子。

一个文件可以被跟踪与否,你使用hg add来跟踪文件,而hg remove或者hg忘记取消跟踪它。 使用没有标志的hg remove会同时删除文件并取消跟踪, hg忘记将不删除它而直接取消。