【问题标题】:How to restore a single subfolder to specific date without affecting others using Git?如何在不影响使用 Git 的其他人的情况下将单个子文件夹恢复到特定日期?
【发布时间】:2018-03-26 10:10:56
【问题描述】:

我有一个包含整个文件夹结构的 Git 存储库,我想将 其中一个(不是全部)重置为它在特定时间的状态,但我不想影响存储库的任何其他文件/文件夹。

如何使用 Git 实现这一目标?

假设我的 root/ 文件夹中有 Git 存储库,其中包含:

root/
root/FolderA/
root/FolderB/sub1/
root/FolderB/sub2/
root/FolderC/

我想将root/FolderB/ 及其所有内容恢复到 2018 年 1 月 1 日的状态,但我不想更改其他文件夹的内容。

注意,我通常使用 UI 前端 (Git Extensions),所以我不经常从命令行使用 GIT。总的来说,我对 GIT 也不是很精通。

【问题讨论】:

    标签: git version-control restore


    【解决方案1】:

    此命令将从 2018 年 1 月 2 日之前的最后一次提交中恢复 root/FolderB/ 的版本:

    git checkout $(git rev-list -n 1 --before="2018-01-02 00:00" master)^ -- root/FolderB/
    

    说明:

    • git rev-list -n 1 --before="2018-01-02 00:00" master:获取 2018 年 1 月 2 日之前最后一次提交的哈希
    • git checkout <commit-hash>^ master -- root/FolderB/:在master 分支上从<commit-hash> 恢复root/FolderB/

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 1970-01-01
      • 2013-06-07
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 2020-01-14
      相关资源
      最近更新 更多