You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Git将指定子文件夹恢复到指定日期且不影响其他文件/文件夹

嘿,这个需求Git完全能轻松搞定——咱们专门针对root/FolderB/单独回滚,完全不会影响其他目录(比如FolderA、FolderC)的内容。下面我结合你的目录结构,一步步给你讲清楚操作步骤:

第一步:找到目标时间对应的Commit哈希值

Git是基于Commit来管理版本的,没法直接用日期恢复,得先把2018年1月1日对应到FolderB的最后一次修改Commit。

在仓库根目录(root/下)执行这条命令,只查看和FolderB相关的提交记录:

git log --until="2018-01-01" -- FolderB/

它会列出所有在2018年1月1日及之前修改过FolderB的Commit,找到最后一条(最接近目标日期的那个),复制它的哈希值(比如假设是abc1234,不用复制全40位,前几位Git就能识别)。

第二步:恢复FolderB到目标Commit的状态

有两种常用方式,选一种适合你的版本就行:

方法1:用git checkout(兼容所有Git版本)

在仓库根目录执行:

git checkout abc1234 -- FolderB/

这里的--是用来分隔Commit哈希值和目标路径的,避免Git把路径当成分支名。执行完后,FolderB就会回到那个Commit对应的状态,此时Git会把FolderB标记为已修改的内容。

方法2:用git restore(Git 2.23及以上版本推荐)

如果你用的是较新的Git版本,git restore语义更清晰,专门用来恢复文件/目录:

git restore --source=abc1234 -- FolderB/

效果和checkout完全一致,只是命令逻辑更直观。

第三步:提交恢复后的修改

恢复完成后,别忘了把这个操作提交到仓库,不然只是工作区的临时修改:

git add FolderB/
git commit -m "恢复FolderB至2018年1月1日的状态"

⚠️ 重要提醒

  • 如果当前工作区的FolderB有未提交的修改,一定要先处理!可以用git stash暂存这些修改(之后需要的话用git stash pop恢复),不然恢复命令会直接覆盖未提交内容,造成数据丢失。
  • 找Commit时一定要加-- FolderB/,不然会列出整个仓库的Commit,很容易找错目标。
  • 恢复后可以先执行git diff查看FolderB的变化,或者直接打开文件夹确认内容,没问题再提交。

内容的提问来源于stack exchange,提问作者BmyGuest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:41:38