3

我在 Kiln 中创建了一个分支,并一直使用它在一个名为contactsmanager.

但是现在,在计划更改之后,我不想将我的更改合并回主干,而是将联系人管理器文件夹重命名为联系人。

我希望 Tortoise不将旧的 contactsmanager 文件夹视为已删除或重命名,而只是简单地丢失.

我想从后备箱拉下并获取旧的联系人管理器,并将它与新(重命名)的联系人文件夹并排放置,并且当它看起来正确时,将此结构推到后备箱(联系人管理器和联系人并排。 )

问题是,TortoiseHG 似乎确定旧的contactsmanager 文件夹已被删除,如屏幕截图所示。我尝试突出显示所有旧的联系人管理器内容,右键单击并选择“忘记”,但无济于事。

有没有办法在 Tortoise 中实现这一点?解决方法相当明确:在主干上复制旧的联系人管理器文件夹,将我的更改推送过来,在主干上重命名,手动恢复旧的联系人管理器,然后一切顺利。

不过,我希望有一个直接的方法。

在此处输入图像描述

4

1 回答 1

3

让我看看我是否可以清除有关 Mercurial 中不同文件状态之间转换的一些事情:

  • 清洁 → 已移除:使用hg removehg renamehg forget

  • 已移除 → 清洁:使用hg revert

因此,重命名、删除和忘记文件都会导致相同的结果:该文件计划在下一次提交中删除。不同的命令在工作副本中当然会有不同的效果:

  • hg remove: 文件已从您的工作副本中删除

  • hg rename: 文件已删除,但现在可以在另一个名称下找到

  • hg forget: 文件还在工作副本中

hg forget命令在任何情况下都不会使文件恢复活力,这就是hg revert目的。

因此,如果我对您的理解正确,那么您希望hg revert整个contactsmanager文件夹将文件恢复到干净状态(这可能是您所说的“我想从后备箱拉下并获取旧的联系人管理器”的意思)。Mercurial 将不知道文件夹中的contacts文件——您可以照常添加它们。

如果你这样做,那么文件contactsmanager和文件夹之间将不会有任何“链接”,contacts并且文件夹将按照你的要求并排存在。缺少的链接意味着您不会被要求将一个文件夹中所做的更改合并到另一个文件夹中。如果你确实想要这个,那么你可以hg copycontactsmanager文件夹添加到contents. 一个副本将使 Mercurial 中所做的更改合并contactsmanagercontacts. 有关更多信息,请参阅我的回答。hg copy

于 2012-07-10T12:11:34.443 回答