随笔 - 62  文章 - 0  评论 - 1  阅读 - 51504

送给git reset --hard 推送到远端的后悔药

本地通过git reset --hard commitId  将版本会退到很久之前的版本

并且执行了 git push origin HEAD --force 推到远端,想要撤销本次回退。

此时git log 只能看到回退后版本之前的提交

 

场景一的后悔药: 本地在回退之前进行过一次pull,代码是最新的

git reflog 查看本地操作记录

# git reflog
7d630936e (HEAD -> test, origin/test) HEAD@{0}: reset: moving to 7d630936e363c47a0e82cdbcd11f5cf1244f85ad 20a92df60 HEAD@{1}: reset: moving to HEAD 20a92df60 HEAD@{2}: reset: moving to HEAD

 

前面的7d630936e是提交id,可以通过再一次 git reset --hard 20a92df60 回退

 

场景二的后悔药:本地在push之前代码不是最新的,通过git log、git reflog 都只能看到最近一次,其他的看不到了

 

复制代码
# git reflog remotes/origin/test
7d630936e (origin/test) remotes/origin/test@{0}: update by push 
c4d32bab6 remotes/origin/test@{1}: pull: fast-forward           
ed81ec0ae remotes/origin/test@{2}: pull: fast-forward           
38fb5a355 remotes/origin/test@{3}: pull: fast-forward           
62658da57 remotes/origin/test@{4}: pull: fast-forward           
6b021b2ea remotes/origin/test@{5}: pull: fast-forward           
b3b769b0f remotes/origin/test@{6}: pull: fast-forward           
39c523c0a remotes/origin/test@{7}: pull: fast-forward           
85bd4b280 remotes/origin/test@{8}: pull: fast-forward           
7d630936e (origin/test) remotes/origin/test@{9}: update by push 
复制代码

 

 

查看远端的操作日志,取最近一次正常提交commitId进行回退:git reset --hard c4d32bab6

之后推送到远端:git push HEAD --force

  

 

posted on   哼着歌啦啦啦  阅读(3271)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示