git revert回退问题

为什么2.py不见了

看你的日志:

复制代码
7f66933 (HEAD -> master) Revert "2222add"   ←刚刚执行完的revert
c87b0e5 Reapply "111"
10f4dd0 Revert "111"
827cc18 2222add        ← HEAD~2 就是这个提交!!这个提交做的动作:**新增2.py**

你执行:

bash 复制代码
git revert HEAD~2

👉 HEAD~2 指向 827cc18(2222add),这个提交的改动就是创建了2.py

git revert 的逻辑:把该提交做过的改动反向抵消

原来提交:新增2.py

revert反向操作:删除2.py

所以磁盘上2.py直接被删掉。

复制代码
[master 7f66933] Revert "2222add"
 1 file changed, 6 deletions(-)
 delete mode 100644 2.py

日志已经写清楚:delete mode 100644 2.py,代表本次revert提交把2.py删除。

关键点再巩固

📌git revert 某个commit撤销这个commit引入的修改,不是跳到这个commit的快照!

想把2.py找回来(两种方式)

方式1:再次revert当前HEAD(撤销刚刚的revert提交)

bash 复制代码
git revert --no-edit HEAD

会生成新提交,把删除2.py这个操作抵消掉,2.py恢复回来。

方式2:直接从旧提交把2.py拿出来,不改动分支

bash 复制代码
git restore --source=827cc18 2.py

827cc18版本的2.py检出到工作区,不生成commit。

梳理你整条提交链行为

复制代码
02e4d81 111
3b6ddc9 2222
7af11c5 111
827cc18 2222add    ✨这里新增2.py
10f4dd0 Revert "111"
c87b0e5 Reapply "111"
7f66933 Revert "2222add" ✨撤销827cc18,删掉2.py

容易踩坑点

很多人会误解:

❌误以为 git revert HEAD~2 → 回到HEAD~2那个版本快照

✅真实:git revert HEAD~2只抵消HEAD~2那一笔提交的修改,其余提交全部保留

对比reset:

bash 复制代码
git reset --hard HEAD~2
# reset:直接把指针挪回去,删掉后面全部提交。

revert:历史越来越长,新增反向补丁;reset:移动指针,剪掉后面提交。

现在你的仓库状态干净,可以继续测试。执行git status看,没有冲突。

相关推荐
晨航4 分钟前
首尾帧、参考图、参考视频:想控制 AI 视频,到底该给它什么素材?
人工智能·aigc·音视频
Java内核笔记5 分钟前
Spring Boot 4 与 Spring AI 2.0 深度集成:ChatClient、Advisor 链与 MCP(源码级实战)
java·后端
可爱的小小小狼6 分钟前
【无标题】
java·算法
用户3126874877206 分钟前
Java SPI 到底怎么实现动态扩展的?从 ServiceLoader 到 Dubbo SPI 全链路拆解
java
新时代农民工~7 分钟前
【双机高可用部署方案-前后端部署】
java·nginx·springboot
杰克尼7 分钟前
SpringAI
人工智能
企业数字化笔记7 分钟前
固定资产还有借用记录能报废吗?Java前置检查、停止折旧与SQL验收
java·开发语言·sql
飞虹地星海8 分钟前
从零到一跑通苍穹外卖:一个大二学生的暑假项目复盘
java
Seoyoneh11 分钟前
智能客服机器人多轮对话与上下文管理:NLU、DST与对话状态机技术实现
人工智能·信息与通信·通信
她的男孩11 分钟前
账号锁定配了"错 4 次锁 30 分钟",我连错 100 次一次没锁上:扒完 4091 行认证源码,找到 5 个坑
java·后端·架构