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