执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?

执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?

先理解为什么代码会消失

repo sync 中的 -d 参数是关键:它会让每个项目仓库(repo 管理的子 git 仓库)丢弃本地的分支检出状态,强制切换到与远程清单一致的提交版本 ,相当于对每个子仓库执行了类似 git checkout --detach + 丢弃本地未提交 / 未推送的变更(尤其是未跟踪的分支或游离状态的提交)。

但幸运的是,git 不会轻易彻底删除提交记录,哪怕是被 "覆盖" 的提交,也会在本地保留日志,git reflog 就是用来找回这些 "隐藏" 提交的。

完整恢复步骤

复制代码
git reflog

git show b26a8f71

方法1:

git checkout b26a8f71

方法2:

# 1. 确保当前在你需要的分支(比如master)

git checkout master

# 2. 捡取丢失的提交到当前分支

git cherry-pick b26a8f71


以后这样操作,不要加 -d选项
# 1. 切换到开发分支
repo forall -c 'git checkout feature/my-feature'
repo forall -c 'git checkout al_dev'
 
# 2. 只同步这个分支的最新代码
repo sync -c -j8
相关推荐
Geek-Chow10 小时前
Git 标签与发布流程:轻量标签、附注标签与签名标签
git·tags
wear工程师10 小时前
Git 冲突怎么解决:别只删标记,先看懂暂存区的 1、2、3 阶段
git
村雨遥10 小时前
覆盖提交不等于删除,这才是彻底清除 Git 历史的正确姿势
git·github
淮北49411 小时前
ubuntu22 默认输入法调整频率
运维·服务器·git·ubuntu·elasticsearch
momo_aa12 小时前
小白下载git步骤
git
dunge202613 小时前
2026 ChatGPT Plus / Pro + Codex 实战:从 0 搭一套 AI 编程项目模板,AGENTS.md + Git + 测试一次配好
人工智能·git·chatgpt
福如意如我心意1 天前
git清除仓库敏感文件并同步至远端的操作
git
Brilliantwxx1 天前
【Linux】 开发|Git 版本控制与 gdb/cgdb 调试
linux·笔记·git
.Hypocritical.2 天前
Git 全套实操|配置 /.gitignore/ 分支合并 / 冲突解决 /git stash 完整教程
git
来日方长。。。。long2 天前
Hermes Agent橙皮书共读|第三篇:保姆级实战部署|本地/VPS从零搭建Hermes
ide·git·hermes