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

相关推荐
唐诺32 分钟前
Android Open Accessory (AOA) 协议完全解析
android·usb·aoa
醉城夜风~1 小时前
手撕 C++ string:从零实现一个简易字符串类
开发语言·c++·算法
nLif1 小时前
进程管道通讯-伪终端方式
c++·windows
颜x小2 小时前
[C#]泛型类与泛型方法
开发语言·c++·c#
Lhan.zzZ2 小时前
深入理解 windeployqt:混合 C++/Qt 项目的打包指南
开发语言·c++·qt
我命由我123452 小时前
Android 开发 - 广播组件(标准广播、有序广播、静态注册广播、分钟到达广播、网络变更广播...)
android·java·开发语言·网络·java-ee·android studio·android-studio
A富得流油的咸鸭蛋2 小时前
安卓鸿蒙面试
android·面试·harmonyos
zh路西法3 小时前
【Navigation2进阶】(十二):自主探索性能优化与 RIG 算法推导与 Nav2 插件实现
c++·dijkstra·ros2·rrt·navigation2·前沿探索
Coffeeee3 小时前
AGP9.0的主要变更项,给Gradle来一次大变样
android·前端·gradle
星恒随风3 小时前
C++ STL 详解:set 与 multiset 的使用、区间查询和算法应用
开发语言·c++·笔记·学习·算法