TortoiseHg不删除update + clean上的文件

时间:2010-12-09 22:12:43

标签: mercurial tortoisehg

我执行了以下步骤:

  1. 委托我的项目
  2. 在我的项目中添加了几个类文件
  3. 决定我想彻底放弃我刚刚完成的事情
  4. 使用TortoiseHg资源库资源管理器更新以使用“放弃本地更改,无备份(-C / - 清除)”选中/打开
  5. 上次更改集

    我添加的两个类文件没有像我预期的那样被删除。它们出现在没有shell图标的文件夹中。

    问题

    1. 这是正确的行为还是错误?
    2. 如果这是正确的,是否有一项功能可以让我回到之前的变更集而不会在我的工作副本中找到一堆垃圾文件?

3 个答案:

答案 0 :(得分:2)

即使你hg add这些文件,如果你还没有提交它们,当你更新它时,它会把文件留作未知文件。例如:

C:\> md test
C:\> cd test
C:\test> hg init
C:\test> echo >file1
C:\test> hg ci -Am file1
adding file1
C:\test> echo >file2
C:\test> echo >file3
C:\test> hg add
adding file2
adding file3
C:\test> hg st
A file2
A file3
C:\test> hg update -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\test> hg st
? file2
? file3

如果您启用purge扩展程序,则hg purge将删除状态为?的文件。请注意,因为您要添加到项目但尚未删除的文件将被删除:

C:\test> hg add file2
C:\test> hg status
A file2
? file3
C:\test> hg purge
C:\test> hg status
A file2

答案 1 :(得分:1)

如果您没有将文件添加到存储库,我认为它们根本不受版本控制。这也意味着它们被版本控制系统单独留下,如果你想要删除它们,你必须自己删除它们。

只有实际将它们置于版本控制之下(将它们添加到存储库中),您才必须还原更改,或者从存储库中明确删除它们。

原因当然是您可能需要项目目录中的某些文件,而这些文件根本不在您的版本控制存储库中。

答案 2 :(得分:1)

在工作文件夹中使用hg update null。检查the docs