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看,没有冲突。

相关推荐
倔强的石头1062 分钟前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
xhy_07076 分钟前
AI 在同一步上反复打转怎么办?WES Code 循环检测怎么用
人工智能·大模型·ai编程·wes code
Shaoshing19 分钟前
ThreadLocal
java·jvm·threadlocal
写后端的胖头鱼33 分钟前
一文详解CAS
java·jvm·spring·cas·乐观锁·自旋
鱼宵41 分钟前
Spring AI 提示词模板:{变量} 参数化 + few-shot,一条提示词反复用
java·人工智能·spring·few-shot·提示词工程·springai
蜗牛互联网1 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
架构师那点事儿1 小时前
大模型如何私有化部署到生产环境
人工智能·架构·llm
HeyAI人工智能1 小时前
官网内容优化 vs 企业级 RAG:AI 搜索时代,企业到底该先做什么?
人工智能·aigc
wanderist.1 小时前
线性筛法详解:从筛质数到欧拉函数、Möbius 函数与约数函数
java·数据结构·算法
Android系统攻城狮1 小时前
Linux Gstreamer深度解析之gst_audio_encoder_get_frame_samples_min调用流程与实战(六十)
linux·运维·服务器·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶