推送错了仓库的解决办法

今天在本地调好代码之后,准备把代码提交到仓库中,在命令行出现了以下报错:

bash 复制代码
To github.com:iamxurulin/static-resource.git
! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'github.com:iamxurulin/static-resource.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我开始以为是GitHub(远程仓库)上有一些本地仓库里没有的更新,所以执行了强制推送的指令:

bash 复制代码
git push -f origin main

执行完操作后,我就跑去源代码仓库查看,发现没有提交记录。

后面跑去static-resource仓库一看才发现,刚才把代码全部提交到这个仓库了,并且git 的推送机制把本地历史记录强制同步到了远程,把这个仓库原有的commit记录全部覆盖了,想通过SHA哈希值恢复到以前的版本也恢复不了。

怎么办呢?

GitHub 个人动态在执行强制推送时,会记录这一动作,但是我打开 GitHub 个人主页在页面中间的 Contribution activity(贡献动态)中也没有找到最近几小时的commit记录。

别急,Git 是有"后悔药"的。

既然有两个仓库,本地电脑上是不是应该有两个文件夹?

我进入到存放 static-resource 的文件夹,右键 -> Git Bash Here ,输入 git log -1。

这时,屏幕上显示了 commit xxxxxxxx 。

接下来,我在这个文件夹打开终端,输入:

bash 复制代码
git push -f https://github.com/username/static-resource.git xxxxxxxx:main

之后,打开static-resource仓库,发现已经恢复了。

所以,后续推送的时候记得执行:

bash 复制代码
git remote -v

确认一下要推送到的远程仓库。

相关推荐
tongyiixiaohuang2 分钟前
供应商主数据同步实战:从易快报到金蝶云星空的单一策略落地
java·网络·数据库
中科三方7 分钟前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php
鱼宵36 分钟前
取集合第一个元素,Java 为什么要写三种写法?
java·windows·python·java21
学长毕设1 小时前
基于SpringBoot的餐厅管理系统-附源码
java·spring boot·后端
沫璃染墨1 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
刚入门的大一新生1 小时前
Linux-线程互斥
java·开发语言
香芋芋圆2 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
赵小哥要冲啦2 小时前
社区邻里互助小程序从 0 到 1 复盘:需求拆解与信任机制设计
java·小程序·需求分析
xiaogai_gai2 小时前
采购业务退款单同步实战:从钉钉审批流到金蝶云星空付款单
java·数据库·钉钉
二哈赛车手2 小时前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript