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

相关推荐
逐光老顽童38 分钟前
Java 与 Kotlin 混合开发避坑指南:30 个真实案例实录
android·kotlin
爱勇宝12 小时前
鸿蒙生态的下半场:开发者不只要能开发,还要能赚钱
android·前端·程序员
Yeyu16 小时前
刷新一帧的艺术:invalidate / postInvalidate / postInvalidateOnAnimation全解析
android
潘潘潘18 小时前
Android OTA 升级原理和流程介绍
android
clint45619 小时前
C++进阶(1)——前景提要
c++
夜悊1 天前
C++代码示例:进制数简单生成工具
c++
plainGeekDev1 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
plainGeekDev1 天前
getter/setter → Kotlin 属性
android·java·kotlin
郝学胜_神的一滴1 天前
CMake 021: IF 条件判据详诠
c++·cmake
YXL1111YXL1 天前
Handler 消息回收与协程异步执行的时序陷阱
android