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

相关推荐
恋猫de小郭42 分钟前
Flutter 发布官方 Skills ,Flutter 在 AI 领域再添一助力
android·前端·flutter
樱木Plus4 小时前
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
c++
Kapaseker6 小时前
一杯美式搞懂 Any、Unit、Nothing
android·kotlin
黄林晴6 小时前
你的 Android App 还没接 AI?Gemini API 接入全攻略
android
恋猫de小郭16 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
冬奇Lab17 小时前
PowerManagerService(上):电源状态与WakeLock管理
android·源码阅读
BoomHe1 天前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农1 天前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos
鹏程十八少1 天前
4.Android 30分钟手写一个简单版shadow, 从零理解shadow插件化零反射插件化原理
android·前端·面试
Kapaseker1 天前
一杯美式搞定 Kotlin 空安全
android·kotlin