如何使用 Git 将单个子文件夹恢复到特定日期而不影响其他人?
How to restore a single subfolder to specific date without affecting others using Git?
我有一个 Git 存储库,其中包含整个文件夹结构,我想将 其中一个 (不是全部)重置为它在 在特定时间,但我不想影响存储库的任何其他 files/folders。
如何使用 Git 实现此目的?
假设我的 root/
文件夹中有 Git 个存储库,其中包含:
root/
root/FolderA/
root/FolderB/sub1/
root/FolderB/sub2/
root/FolderC/
我想将 root/FolderB/
及其所有内容恢复到 2018 年 1 月 1 日的状态,但我不想更改其他文件夹的内容。
请注意,我通常使用 UI 前端 (Git Extensions),因此我不经常从命令行使用 GIT。总的来说,我也不是很精通GIT。
此命令将从 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/
:从 <commit-hash>
恢复 master
分支上的 root/FolderB/
我有一个 Git 存储库,其中包含整个文件夹结构,我想将 其中一个 (不是全部)重置为它在 在特定时间,但我不想影响存储库的任何其他 files/folders。
如何使用 Git 实现此目的?
假设我的 root/
文件夹中有 Git 个存储库,其中包含:
root/
root/FolderA/
root/FolderB/sub1/
root/FolderB/sub2/
root/FolderC/
我想将 root/FolderB/
及其所有内容恢复到 2018 年 1 月 1 日的状态,但我不想更改其他文件夹的内容。
请注意,我通常使用 UI 前端 (Git Extensions),因此我不经常从命令行使用 GIT。总的来说,我也不是很精通GIT。
此命令将从 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/
:从<commit-hash>
恢复master
分支上的root/FolderB/