Repo 撤销当前修改
作者:互联网
2026-03-06
repo 提供了快速撤销所有仓库修改的命令,以下是几种常用方式:
一键撤销所有修改
方式一:最常用(推荐)
# 撤销所有仓库的所有修改(包括暂存区和工作区)
repo forall -c 'git reset --hard HEAD && git clean -fdx'
| 命令 | 作用 |
|---|---|
repo forall | 对所有仓库执行命令 |
git reset --hard HEAD | 强制回退到最新提交,丢弃所有修改 |
git clean -fdx | 删除所有未跟踪的文件和目录 |
方式二:分步执行(更安全,可先检查)
# 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'
方式三:保留未跟踪文件(仅撤销修改)
# 只撤销跟踪文件的修改,保留新建的文件
repo forall -c 'git checkout -- .'
对比:不同清理强度
| 命令 | 效果 | 适用场景 |
|---|---|---|
git checkout -- . | 撤销跟踪文件的修改 | 保留新文件,只恢复旧文件 |
git reset --hard HEAD | 回退到 HEAD,丢弃所有提交 | 彻底回退到最新提交 |
git clean -fd | 删除未跟踪的文件/目录 | 清理编译生成的文件 |
git clean -fdx | 删除未跟踪文件 + 忽略的文件 | 最彻底清理(推荐) |
常用组合命令
# 完整清理(最常用)
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 --hard 和 clean -fdx 删除的文件无法找回 |
| 先备份 | 如有重要修改,先 repo diff 导出补丁 |
| 子模块 | 如需清理子模块,加 --recursive |
导出修改(清理前备份)
# 导出所有修改到补丁文件
repo diff > my_changes.patch
# 之后可以重新应用
git apply my_changes.patch
总结:日常开发最常用的是:
repo forall -c 'git reset --hard HEAD && git clean -fdx'
一键回到干净状态,然后重新 repo sync。
相关推荐
专题
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
最新数据
相关文章
指针、引用和常量的关系
03/26
C++学习笔记(33):智能指针(工厂函数)
03/25
学而时习之:C++中的标准模板5.2
03/25
学而时习之:C++中的预处理
03/23
C++ RAII:从“人肉记账”到“自动保姆”的资源管理革命
03/23
告别 C 风格枚举:为什么你应该使用 enum class
03/22
从智能指针窥见现代C++的生存法则:告别内存泄漏,这篇就够了
03/22
C++学习笔记(30):智能指针(unique_ptr)
03/22
Leetcode第一题:用C++解决两数之和问题
03/20
static 关键字:从 C 到 C++,一篇文章彻底搞懂它的“七十二变”
03/20
AI精选
