当前位置: 首页 > news >正文

Git Revert 特定文件/路径的方法

git revert 命令本身不支持直接指定文件或路径,但有几种方法可以实现你的需求。


方法1:使用 git checkout(推荐 - 最简单)

恢复单个文件到指定提交

# 将某个文件恢复到 master 分支的状态
git checkout master -- src/main/java/PriceFilter.java# 将某个文件恢复到指定提交的状态
git checkout 8b68b626 -- src/main/java/PriceFilter.java# 恢复后需要提交
git add src/main/java/PriceFilter.java
git commit -m "revert: 恢复 PriceFilter.java 到 master 状态"# 恢复整个目录到 master 状态
git checkout master -- src/main/java/# 恢复多个文件
git checkout master -- file1.java file2.java# 恢复当前目录下所有 .java 文件
git checkout master -- *.java

方法2:使用 git restore(Git 2.23+推荐)

# 将文件恢复到 master 分支状态
git restore --source=master src/main/java/PriceFilter.java# 将文件恢复到指定提交状态
git restore --source=8b68b626 src/main/java/PriceFilter.java# 恢复整个目录
git restore --source=master src/main/java/# 提交更改
git add .
git commit -m "revert: 恢复指定文件到 master 状态"# 恢复到工作区(默认)
git restore --source=master --worktree src/main/java/PriceFilter.java# 恢复到暂存区
git restore --source=master --staged src/main/java/PriceFilter.java# 同时恢复到工作区和暂存区
git restore --source=master --worktree --staged src/main/java/PriceFilter.java

方法3:手动 Revert + 选择性恢复

# 1. 先正常 revert 整个提交
git revert cc53969d --no-commit# 2. 查看被 revert 的文件
git status# 3. 恢复不需要 revert 的文件
git checkout HEAD -- 不需要revert的文件.java# 4. 只保留需要 revert 的文件更改
git add 需要revert的文件.java# 5. 提交
git commit -m "revert: 仅恢复部分文件到指定状态"

方法4:使用 IDEA 图形化操作

单个文件恢复

  1. 在项目树中右键点击目标文件
  2. Git → Show History
  3. 在历史记录中找到目标提交(如 master 的最新提交)
  4. 右键点击该提交 → Get Revision
  5. 确认恢复该文件到选定版本

目录恢复

  1. 右键点击目标目录
  2. Git → Repository → Reset
  3. 选择目标提交
  4. 选择 Mixed 模式
  5. 在弹出的文件列表中只选择需要的文件
  6. 点击 Reset
http://www.dtcms.com/a/334437.html

相关文章:

  • 使用openssl创建自签名CA并用它签发服务器证书
  • 技术赋能与深度洞察:北京国标政务窗口第三方调查
  • 【攻防实战】红队攻防之Goby反杀
  • day34-LNMP详解
  • 数据结构:构建 (create) 一个二叉树
  • 【图论】分层图 / 拆点
  • 算法训练营day53 图论④ 110.字符串接龙、105.有向图的完全可达性、106.岛屿的周长
  • 树、哈夫曼树以及二叉树的各种操作
  • 【CF】Day128——杂题 (图论 + 贪心 | 集合 + 贪心 + 图论 | 二分答案 + 贪心)
  • 【完整源码+数据集+部署教程】植物病害检测系统源码和数据集:改进yolo11-RFAConv
  • ceph pools have too many placement groups
  • 0815 UDP通信协议TCP并发服务器
  • 【Java web】HTTP 协议详解
  • H20芯片与中国的科技自立:一场隐形的博弈
  • RK3568 NPU RKNN(四):RKNN-ToolKit2性能和内存评估
  • web-apache优化
  • Java Web部署
  • Python:如何在Pycharm中显示geemap地图?
  • Flutter InheritedWidget 详解:从生命周期到数据流动的完整解析
  • 开源数据发现平台:Amundsen Frontend Service React 配置 Flask 配置 Superset 预览集成
  • 教育行业破局:课程答疑智能体如何用“按次付费+算力限制”实现精准变现,可独立部署(井云智能体封装系统)
  • NLP:Transformer模型构建
  • 数字分类:机器学习经典案例解析
  • 通过rss订阅小红书,程序员将小红书同步到自己的github主页
  • MCU软件架构---RAM分区设计原则(四)
  • PyTorch生成式人工智能——使用MusicGen生成音乐
  • 二叉树的三种遍历方法
  • List容器:特性与操作使用指南
  • VS Code配置MinGW64编译GLPK(GNU Linear Programming Kit)开源库
  • 实现Android图片手势缩放功能的完整自定义View方案,结合了多种手势交互功能