我想知道从文件系统(例如通过 Windows 资源管理器)删除跟踪文件时是否有任何后果,与使用 hg remove 从文件系统中删除它并取消跟踪它相比。
在这两种情况下,我都会在之后提交,只是在第一种情况下,乌龟 HG 用感叹号将文件标记为丢失,在第二种情况下,它将文件标记为干净并准备好删除。
除此之外还有什么不同吗?
我想知道从文件系统(例如通过 Windows 资源管理器)删除跟踪文件时是否有任何后果,与使用 hg remove 从文件系统中删除它并取消跟踪它相比。
在这两种情况下,我都会在之后提交,只是在第一种情况下,乌龟 HG 用感叹号将文件标记为丢失,在第二种情况下,它将文件标记为干净并准备好删除。
除此之外还有什么不同吗?
如果您转到文件系统路径并且不对跟踪文件进行任何其他更改,则 hg 在您尝试提交时会给您一个错误:
nothing changed (1 missing files, see 'hg status')
(这只是 的一个特例nothing changed
。)
如果您更改了其他内容,那么 hg 不会抱怨,但文件的状态将继续显示为缺少hg status
. 这具有使您的(心理)工作空间混乱的负面影响,并使您更难一眼看出您的工作目录的当前状态是什么。此外,该文件仍保留在存储库中,并将在hg update
任何仍在跟踪它的修订版中恢复!
hg remove
如果文件已从文件系统中删除,将返回错误;在这种情况下,您应该使用hg forget
来告诉 Mercurial 停止跟踪文件。
如果您更喜欢使用外部实用程序(如 Windows 资源管理器)进行重大更改,您可以使用hg addremove
自动检测添加和删除的 nifty。(缺点是您可能会删除和取消跟踪意外删除的文件。)