恢复git push -f origin master强推被覆盖的commit

非特殊情况 git push -f origin master 不要乱用

操作方法
备份当前工作区的数据
你可以使用git stash等命令备份下现在正在写的代码
1.1在命令行输入git reflog/git log -g
显示所有历史操作,找到你需要的提交(包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录)


QQ截图20211105173105.jpg

2.1 强制回退到当时被删除的commit

git reset --hard <SHA1>
或者
git cherry-pick <SHA1>

直接把当时版本的工作拿回来。不过如果有冲突的话还要处理冲突。
3.1强推上远程分支

git push -f origin <branch>

如果引起commit丢失的原因并没有记录在reflog 中,比如运行了rm -Rf .git/logs/, 因为 reflog 数据是保存在 .git/logs/ 目录下的,这样就没有 reflog 了。
可以使用 git fsck 工具,该工具会检查仓库的数据完整性。如果指定 --full 选项,该命令显示所有未被其他对象引用 (指向) 的所有对象:


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 Git是一个易学难精的分布式版本控制系统,被我们码农常用于代码的管理。如果你还不了解Git,建议先通过廖雪峰...
    蛮三刀酱阅读 4,783评论 0 1
  • 文章略长,预计阅读时间28分钟 一.git init 知识点: 创建版本库的两种方式可以创建git-demo目录,...
    shuxiaotai阅读 3,110评论 0 0
  • “新来的实习生把自己做了一个月的功能给覆盖了,向我求救,要不要帮他?——编程三分钟” 第 8 篇 找回弄丢的代码 ...
    踏雪无痕_cb90阅读 11,887评论 0 3
  • 基本配置 Git 的配置文件为 .gitconfig,它在用户主目录下~/.gitconfig,针对当前用户是全局...
    mocobk阅读 2,972评论 0 0
  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    极客学院Wiki阅读 12,146评论 0 3