hg forget和hg remove有什么区别?

03/20 20:18
阅读数 130

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

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


#1楼

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

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

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

手册页hg(1)说这是关于忘记:

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

这个关于删除:

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


#2楼

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

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

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


#3楼

如果对具有“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


#4楼

可以跟踪或不跟踪文件,使用hg add跟踪文件和hg remove或hg忘记取消跟踪它。 使用没有标志的hg删除将删除文件并取消跟踪它, hg忘记只是取消跟踪它而不删除它。


#5楼

把最好的办法是, hg forget相同hg remove 除了它叶子中的文件, 你的工作副本后面。 这些文件作为未跟踪文件留下,现在可以选择使用.hgignore的模式进行忽略。

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

展开阅读全文
打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部