36

当将 Git 与 TortoiseGit 一起使用时:有人知道如何将单个文件(或完整的存储库)恢复到以前的版本吗?

例如,我有一个包含多个文件的存储库。一个文件存在于三个修订版(1 ; 2 ; 3)中。现在我想从第 3 版改回第 2 版。

TortoiseGit 在“显示日志”对话框中提供了一个“恢复”功能,允许跳转回特定的版本,但这将恢复您的整个存储库而不是单个文件。

同样,一旦我还原了某些内容,我不知道如何撤消还原并跳回最新版本。

4

5 回答 5

19

从命令行:git checkout可能是你想要的。

该文档显示了以下示例:

$ git checkout master~2 Makefile

恢复Makefile到主分支中的两个修订

在 TortoiseGit 中(通过 Windows 资源管理器),您可以通过以下步骤执行此操作:

  • 在资源管理器中导航到文件所在的文件夹。
  • 右键单击要恢复的文件,Show log从 TortoiseGit 上下文菜单中选择
  • 在顶部(“图表”)选择具有您要恢复到的文件版本的修订版
  • 在第三部分(文件列表)中,右键单击文件并选择Revert to this revision
  • 您应该收到类似的消息1 files revert to e19a77
  • 于 2009-11-03T20:46:10.937 回答
    19

    也可以获取特定文件:

    • 右键单击文件
    • 选择菜单项:Git Show Log

    TortoiseGit 显示一个包含所有修订列表的对话框

    • 点击上一版本 (2)

    在对话框底部的列表中,它显示了与提交关联的所有文件

    • 找到您要查看的文件
    • 右键单击该文件并将修订保存到
    • 这将保存文件的先前版本以及文件上连接的提交号

    例如: - 原始文件是 file.txt - 修订版 2 将另存为 file-67b51a8.txt

    我正在使用 TortoiseGit v2.2.0.0

    于 2016-08-19T20:55:46.477 回答
    17

    在 TortoiseGit 中,答案是右键单击项目文件夹并单击 Show Log,然后右键单击要回滚到的更改并单击 Switch/Checkout to this...。然后,它会让你从提交堆栈中那个奇怪的地方开始,或者分支,以防你打算提交并希望事情保持理智。

    于 2013-02-20T11:13:20.483 回答
    8

    根据这些评论更新了我的答案:


    假设工作树是干净的并且您想要:

    1. 签出其先前版本的一些文件
    2. 测试
    3. 恢复到当前版本

    1. 签出其先前版本的一些文件

      (a) 右键单击​​要还原的文件并显示该文件的日志

      在此处输入图像描述

      (b) 右键单击​​文件列表中的文件并执行Revert to parent revision

      在此处输入图像描述

      在此处输入图像描述

      (c) 重复 (a), (b) 直到你得到所有你想要的文件。

      在此处输入图像描述

    2. 测试

    3. 恢复到当前版本

      (a)在资源管理器的上下文菜单中执行Revert...

      这样,您可以选择要还原的文件。

      (b) 或这种快速方法:在 Log 对话框中执行Reset Hard

      这样,所有更改的文件都会恢复。(=> 丢失所有工作目录更改)

      在此处输入图像描述

      在此处输入图像描述

    (在 TortoiseGit 1.8.16.1、GfW 2.6.4.windows.1、Win 10 64bit 上测试)

    于 2015-11-17T06:45:48.157 回答
    3

    对于乌龟版本 2.3.0:

    您可以通过多种方式做到这一点,但我认为最快的是:

    1. 右键单击文件
    2. 单击菜单选项“与以前版本的差异”
    3. 右键单击文件的左侧(上一个)版本
    4. 单击菜单选项“使用整个文件”
    5. 保存更改 (ctrl+s)
    于 2017-01-30T01:20:17.420 回答