【问题标题】:Mercurial revert/backout a single fileMercurial 恢复/退出单个文件
【发布时间】:2010-11-03 06:06:51
【问题描述】:

在 Mercurial 中,我有一个旧的变更集,除了对单个文件的更改之外,它都很好。我将如何恢复对单个文件的更改?

即使只是能够查看上一个变更集中的文件状态也很好,然后我可以剪切和粘贴。

我的 Mercurial 客户是 TortoiseHg。

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    从 TortoiseHg 2.8.1 开始

    1. 提交以防出现问题
    2. 右键单击要回滚到的修订版,选择浏览修订版
    3. 找到你想恢复到这个版本的文件,右键,'恢复到这个版本(Ctrl+Shift+R
    4. 对所有要还原的文件重复 3

    【讨论】:

      【解决方案2】:

      由于 TortoiseHG 的风格 (~) 更改,Raghuram 的回答不再正确。 “Repository Browser”已重命名为“TortoiseHG Workbench”,但更重要的是,“Revert file contents”不再是上下文菜单。

      从 2.0.4 版开始,您需要:

      1. 提交您当前的存储库以防出现问题。
      2. 在“TortoiseHG Explorer”中打开相关变更集
      3. 在文件列表中,右键单击要还原的文件。
      4. 从上下文菜单中选择“恢复到修订版”。
      5. 您将看到一个确认对话框,其中包含一个标记为“将所有文件恢复到此修订版”的复选框。确保它未选中。
      6. 点击“确定”。
      7. 确认仅还原了该文件。如果所有内容都已还原,请更新到第 1 步中创建的修订版。

      我第一次尝试这个时,我不确定我做错了什么,但我恢复了整个存储库而不是单个文件。所以,在尝试之前一定要确保你提交了一个新的版本。

      【讨论】:

      • 它恢复到此修订版,但不恢复修订版本身的更改。很不方便。
      • 我不太确定您在寻找什么。也许您想恢复到之前的版本?
      • 是的,我想恢复一些提交的一半,比如几个文件。这意味着我想将它们恢复到他们在此提交之前的修订版。所以我必须查看每个文件的历史记录,在我提交之前找到修订版并单独恢复它。 10 个文件,你就讨厌 HG。
      • 如果你想提出一个单独的问题,我会回答它。 ;)
      • 是的,这对我来说效果不佳。我认为界面已经改变了一些,但我设法恢复了整个代码库,即使它说它只适用于一个文件。
      【解决方案3】:

      打开Repository Browser,转到感兴趣的变更集。您将看到已更改文件的列表。选择您感兴趣的文件并点击Revert file contents

      【讨论】:

        【解决方案4】:

        CLI 版本,适用于 TortoiseHG 的任何(新)版本

        为了仅在 FILE 中撤消更改,在更改集 CSET 中引入,请使用这种形式的回退

        hg backout -r CSET --include FILE

        【讨论】:

        • 我不确定这是否能满足我的要求。我认为这将恢复特定变更集中文件的更改。我想将文件恢复到它在特定变更集中的确切状态,忽略所有后续变更集。
        • 这是实际答案,相当于变更集上的“退出”,但仅适用于一个文件。恢复修订是一件更加激烈的事情。奇怪的是 TortoiseHg 对于变更集和文件修订有两个不同的东西
        【解决方案5】:

        至少我已经找到了第二部分的答案。要查看旧版本的单个文件的内容,请在 TortoiseHg 中执行以下操作:

        1. 右键单击文件并选择存储库资源管理器。
        2. 点击您要恢复的版本。
        3. 右击左下窗格中的文件。选择在修订时查看或在修订时保存。

        【讨论】:

          【解决方案6】:

          要使用 TortoiseHg(从 2.2.1 版开始)查看文件的旧版本,请打开 TortoiseHG Workbench,右键单击旧版本,然后单击“浏览版本...”

          【讨论】:

            【解决方案7】:

            虽然使用 TortoiseHg 的 Browse at rev... 的建议可以帮助您查看发生了什么变化(即您可能想要退出的内容),但它不会帮助您退出文件——如果,正如不止一个答案所暗示的那样,您选择Revert to Revision,您将仅退出后续更改,而不是更改集中的更改。

            撤消单个文件的变更集的最简单方法(至少,从 TortoiseHg 2.6.1 开始):

            1. 在 Windows 资源管理器中浏览到文件,然后选择它
            2. 右键单击,然后从 TortoiseHg 上下文子菜单中选择 Revision History
            3. 选择之前的修订您要退出的修订
            4. 右键单击并选择Revert to Revision
            5. 确保未选中“将所有文件恢复到此版本”复选框(它将 遵循这些步骤后默认为)

            当然,如果您所说的“旧变更集”是指您想要保留对该文件的后续更改,那么除了检查变更集并手动撤消更改之外,没有其他办法。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-06-12
              • 2011-11-17
              • 1970-01-01
              • 1970-01-01
              • 2012-04-10
              • 2021-05-20
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多