[英]What is the difference between hg forget and hg remove?
我希望mercurial从存储库的当前状态中删除多个文件。 但是,我希望文件存在于以前的历史记录中。
如何forget
和remove
不同,他们可以做我想要的吗?
' hg forget
'只是' hg remove -Af
'的缩写。 来自' hg remove
'帮助:
...和-Af可用于从下一版本中删除文件而不从工作目录中删除它们。
底线:' remove
'从磁盘上的工作副本中删除文件(除非您使用-Af
),' forget
'不会。
把最好的办法是, hg forget
是相同的hg remove
除了它叶子中的文件, 你的工作副本后面。 这些文件作为未跟踪文件留下,现在可以选择使用.hgignore
的模式进行忽略。
换句话说,当我从你那里拉出来时,我无法判断你是否使用了hg forget
或hg remove
。 当我更新到该变更集时,您将 hg forget
运行的文件将被删除 - 就像您使用了hg remove
。
从文档中,您显然可以使用任一命令将文件保留在项目历史记录中。 看起来你想删除,因为它也从工作目录中删除文件。
来自http://hgbook.red-bean.com/read/上的Mercurial书:
删除文件不会影响其历史记录。 重要的是要理解删除文件只有两个效果。 它从工作目录中删除当前版本的文件。 它阻止Mercurial从下次提交时开始跟踪对文件的更改。 删除文件不会以任何方式改变文件的历史记录。
手册页hg(1)说这是关于忘记:
标记指定的文件,以便在下次提交后不再跟踪它们。 这仅从当前分支中删除文件,而不是从整个项目历史记录中删除文件,并且不会从工作目录中删除它们。
这个关于删除:
安排指定的文件以从存储库中删除。 这仅从当前分支中删除文件,而不是从整个项目历史记录中删除。
如果对具有“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 remove或hg忘记取消跟踪它。 使用没有标志的hg删除将删除文件并取消跟踪它, hg忘记只是取消跟踪它而不删除它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.