Repo 撤销当前修改

repo 提供了快速撤销所有仓库修改的命令,以下是几种常用方式:


一键撤销所有修改

方式一:最常用(推荐)

bash 复制代码
# 撤销所有仓库的所有修改(包括暂存区和工作区)
repo forall -c 'git reset --hard HEAD && git clean -fdx'
命令 作用
repo forall 对所有仓库执行命令
git reset --hard HEAD 强制回退到最新提交,丢弃所有修改
git clean -fdx 删除所有未跟踪的文件和目录

方式二:分步执行(更安全,可先检查)

bash 复制代码
# 1. 先查看哪些仓库有修改
repo status

# 2. 只撤销特定仓库(示例:frameworks/base)
repo forall frameworks/base -c 'git reset --hard HEAD'

# 3. 撤销所有仓库
repo forall -c 'git reset --hard HEAD'
repo forall -c 'git clean -fdx'

方式三:保留未跟踪文件(仅撤销修改)

bash 复制代码
# 只撤销跟踪文件的修改,保留新建的文件
repo forall -c 'git checkout -- .'

对比:不同清理强度

命令 效果 适用场景
git checkout -- . 撤销跟踪文件的修改 保留新文件,只恢复旧文件
git reset --hard HEAD 回退到 HEAD,丢弃所有提交 彻底回退到最新提交
git clean -fd 删除未跟踪的文件/目录 清理编译生成的文件
git clean -fdx 删除未跟踪文件 + 忽略的文件 最彻底清理(推荐)

-f = 强制,-d = 包含目录,-x = 包含 .gitignore 忽略的文件


常用组合命令

bash 复制代码
# 完整清理(最常用)
repo forall -c 'git reset --hard HEAD && git clean -fdx'

# 简写形式
repo forall -c 'git reset --hard && git clean -fdx'

# 清理后重新同步
repo forall -c 'git reset --hard HEAD && git clean -fdx' && repo sync -c

注意事项

⚠️ 警告 说明
不可恢复 reset --hardclean -fdx 删除的文件无法找回
先备份 如有重要修改,先 repo diff 导出补丁
子模块 如需清理子模块,加 --recursive

导出修改(清理前备份)

bash 复制代码
# 导出所有修改到补丁文件
repo diff > my_changes.patch

# 之后可以重新应用
git apply my_changes.patch

总结:日常开发最常用的是:

bash 复制代码
repo forall -c 'git reset --hard HEAD && git clean -fdx'

一键回到干净状态,然后重新 repo sync

相关推荐
不会代码的小猴15 分钟前
3. 控件学习1
开发语言·c++·笔记·qt·算法
叶辞树1 小时前
Android CLI
android
我命由我123453 小时前
Android 开发问题:unexpected element <service> found in <manifest>
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
程思扬3 小时前
Android ANR实战排查:主线程SystemClock.sleep导致页面启动偶现无响应
android·笔记
码农coding4 小时前
android12 InputManagerService分析之输入事件如何回到应用层
android
zhangguojia74 小时前
从一个窗口覆盖问题出发,理解 Android Window 的层级与权限
android
烧酒同学5 小时前
【C++】记录size of std::vector的巧妙坑
开发语言·c++·图形渲染
古法安卓7 小时前
Android-SELinux 策略调试实战:从 AVC 日志到策略修复
android·java·android studio
@呱呱爱学习7 小时前
C++大成之路_ STL容器_ Vector
开发语言·c++
码匠许师傅8 小时前
【C++ 面试真题】19. 聊聊 C++ 的迭代器
开发语言·c++·面试