我在Kiln创建了一个分支,并且一直在使用它在名为contactsmanager
的文件夹中工作。
现在,在计划发生变化之后,我不想将我的更改合并到主干中,而是将重命名 contactsmanager文件夹改为联系人。
我希望Tortoise将旧的contactsmanager文件夹而不是视为已删除或重命名,但只是,简单,缺失。
我想从后备箱拉下来并获得旧的联系人管理员,并将其与新的(重命名的)联系人文件夹并排放置,并且当它看起来正确时,将此结构推送到主干(contactsmanager和contacts side)旁边。)
问题是,TortoiseHG似乎确定删除了旧的contactsmanager文件夹,如屏幕截图所示。我已经尝试突出显示所有旧的联系人管理器,右键单击并选择“忘记”,但无济于事。
有没有办法在Tortoise中实现这一目标?解决方法非常明确:在主干上复制旧的contactsmanager文件夹,推送我的更改,在主干上重命名,手动恢复旧的联系人管理器,并且好好去。
我希望有一种直接的方式。
答案 0 :(得分:3)
让我看看我是否可以澄清一些关于Mercurial中不同文件状态之间转换的内容:
清除→已移除与hg remove
,hg rename
或hg forget
。
删除→清除:与hg revert
因此,重命名,删除和遗忘文件都会产生同样的结果:文件计划在下次提交时删除。不同的命令当然会在工作副本中产生不同的效果:
hg remove
:文件已从您的工作副本中删除
hg rename
:文件已删除,但现在可以在其他名称下找到
hg forget
:文件仍在工作副本中
hg forget
命令在任何情况下都不会使文件恢复生命,这就是hg revert
的用途。
因此,如果我理解正确,那么您希望hg revert
整个contactsmanager
文件夹将文件恢复到干净状态(这可能是您所说的“我想要的从后备箱拉下来并获得旧的联系人管理员“)。 <{1}}文件夹中的文件对于Mercurial仍然是未知的 - 您可以正常添加它们。
如果您这样做,那么contacts
和contactsmanager
中的文件之间就不会有任何“链接”,文件夹会按照您的要求并排存在。缺少的链接将意味着您不会被要求将一个文件夹中所做的更改合并到另一个文件夹中。如果您确实需要此功能,则可以contacts
将hg copy
文件夹contactsmanager
添加到contents
。副本将使contactsmanager
中的Mercurial合并更改为contacts
。有关详细信息,请参阅my answer about hg copy
。