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. GitShow History
  3. 在历史记录中找到目标提交(如 master 的最新提交)
  4. 右键点击该提交 → Get Revision
  5. 确认恢复该文件到选定版本

目录恢复

  1. 右键点击目标目录
  2. GitRepositoryReset
  3. 选择目标提交
  4. 选择 Mixed 模式
  5. 在弹出的文件列表中只选择需要的文件
  6. 点击 Reset
相关推荐
KaneLogger7 小时前
OpenCode 操作手册
git
木子小喵7 小时前
通俗讲解Git安装每一步!!
git
IOT那些事儿8 小时前
TortoiseGit拉取开源子仓库失败
git·ssh·tortoisegit·submodule
不想看见40410 小时前
Git的多种仓库选择与推荐
git
脆皮炸鸡75515 小时前
Linux开发工具~~~版本控制器Git以及调试工具GDB
linux·服务器·开发语言·经验分享·git·学习方法
console.log('npc')17 小时前
团队协作提交自己的功能
git
独隅17 小时前
开源项目 Git 贡献全流程的完整拆解:从 Fork 到 PR
git·开源
___波子 Pro Max.19 小时前
Git Rebase: HEAD~ 的简洁写法
git
bxri19 小时前
团队协作中的 Git 工作流(企业级实战)
git·gitee·github
ljh57464911919 小时前
git log source-branch --oneline 命令
git