git push -f强制冲掉了Github的远程仓库怎么恢复?

这篇具有很好参考价值的文章主要介绍了git push -f强制冲掉了Github的远程仓库怎么恢复?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

git push -f强制冲掉了Github的远程仓库怎么恢复?

背景

看到有很多教程说,可以本地仓库回退到之前的 commit,恢复 GitHub 的 remote 仓库的,但是我遇到的情况是,我本地这个仓库是新建的,只有一次 commit 记录,我是直接 push -f 把 remote 的仓库全冲了。。。本地根本没法恢复。

于是在网上搜索,只找到两篇相关的文章,参考这个老哥的:

https://www.boris1993.com/rescuing-my-github-repo-from-force-push.html

这个老师是参考的这个老哥:https://gist.github.com/agarwalparas/d355a950148702cc7ba82abc4d1943bf

我按照第二个老哥的方法去试,又按照 github 的官方 doc 修改 API 的参数,但是还是不行

git push -f强制冲掉了Github的远程仓库怎么恢复?,后端,Java 下面总结一下怎么恢复

找到当时的 commit 的信息

首先,要通过 https://api.github.com/repos/:owner/:repo/events 这个 API 找到上次提交的 sha。

[
  {
    "id": "34280684189",
    "type": "PushEvent",
    "actor": {
      "id": 61727602,
      "login": "YOUR_NAME",
      "display_login": "YOUR_NAME",
      "gravatar_id": "",
      "url": "https://api.github.com/users/YOUR_NAME",
      "avatar_url": "https://avatars.githubusercontent.com/u/61727602?"
    },
    "repo": {
      "id": 693138740,
      "name": "YOUR_NAME/YOUR_NAME.github.io",
      "url": "https://api.github.com/repos/YOUR_NAME/YOUR_NAME.github.io"
    },
    "payload": {
      "repository_id": 693138740,
      "push_id": 16338237949,
      "size": 1,
      "distinct_size": 1,
      "ref": "refs/heads/master",
      "head": "19709fd69b846679a57edd1c0ee8ae0f199302b3",
      "before": "d3e142177d33de137566956bd8758b2ee77eaff2",
      "commits": [
        {
          "sha": "19709fd69b846679a57edd1c0ee8ae0f199302b3",
          "author": {
            "email": "xxxx@163.com",
            "name": "YOUR_NAME"
          },
          "message": "doc: add new file",
          "distinct": true,
          "url": "https://api.github.com/repos/YOUR_NAME/YOUR_NAME.github.io/commits/19709fd69b846679a57edd1c0ee8ae0f199302b3"
        }
      ]
    },
    "public": true,
    "created_at": "2023-12-19T13:32:35Z"
  },
  {
    "id": "31933061999",
    "type": "PushEvent",
    "actor": {
      "id": 61727602,
      "login": "YOUR_NAME",
      "display_login": "YOUR_NAME",
      "gravatar_id": "",
      "url": "https://api.github.com/users/YOUR_NAME",
      "avatar_url": "https://avatars.githubusercontent.com/u/61727602?"
    },
    "repo": {
      "id": 693138740,
      "name": "YOUR_NAME/YOUR_NAME.github.io",
      "url": "https://api.github.com/repos/YOUR_NAME/YOUR_NAME.github.io"
    },
    "payload": {
      "repository_id": 693138740,
      "push_id": 15094516915,
      "size": 1,
      "distinct_size": 1,
      "ref": "refs/heads/master",
      "head": "d3e142177d33de137566956bd8758b2ee77eaff2",
      "before": "5270d691926a0919dfedb107e5f49716ec04055b",
      "commits": [
        {
          "sha": "d3e142177d33de137566956bd8758b2ee77eaff2",
          "author": {
            "email": "xxxx@163.com",
            "name": "YOUR_NAME"
          },
          "message": "add a test file",
          "distinct": true,
          "url": "https://api.github.com/repos/YOUR_NAME/YOUR_NAME.github.io/commits/d3e142177d33de137566956bd8758b2ee77eaff2"
        }
      ]
    },
    "public": true,
    "created_at": "2023-09-19T08:43:27Z"
  }
]

可以看到,我这边只有两次提交记录,最上面的是最新一次的,冲掉了下面的 commit。

因此,我要恢复到的那个 commit 是:d3e142177d33de137566956bd8758b2ee77eaff2。

直接找到当时那个 commit 对应的 push 信息,访问下面这个 URL。

git push -f强制冲掉了Github的远程仓库怎么恢复?,后端,Java

找到 commit 信息里的 html_url

得到的数据很长,但是我们找到关键信息:

"html_url": "https://github.com/YOUR_NAME/YOUR_NAME.github.io/commit/d3e142177d33de137566956bd8758b2ee77eaff2"

git push -f强制冲掉了Github的远程仓库怎么恢复?,后端,Java 直接访问这个 URL,找到当时的 commit 记录:

git push -f强制冲掉了Github的远程仓库怎么恢复?,后端,Java

找到当时的仓库所有文件的快照

点击右边的 Browse files,Browse the repository at this point in the history。直接找到了当时的仓库快照:

git push -f强制冲掉了Github的远程仓库怎么恢复?,后端,Java 下载当时的代码:

git push -f强制冲掉了Github的远程仓库怎么恢复?,后端,Java 这下就都找回来了!

其实主要还是 Github 存储了所有的 commit 信息,因此,就算是我们本地有丢失,通过访问 Github 的 OpenAPI,也是可以想办法找到的!

虚惊一场。

本文由博客一文多发平台 OpenWrite 发布!文章来源地址https://www.toymoban.com/news/detail-762780.html

到了这里,关于git push -f强制冲掉了Github的远程仓库怎么恢复?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git push 推送至远程仓库发生报错

    git push origin master To https://gitee.com/ /hello-git.git ! [rejected] master - master (fetch first) error: failed to push some refs to \\\'https://gitee.com/ /hello-git.git’ hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may wan

    2024年02月13日
    浏览(61)
  • 通过git管理远程gitee仓库(push、pull)

    Git:是一种分布式版本控制系统,用于跟踪和管理软件开发项目的源代码和文件。它可以记录文件的修改历史,允许多人协同工作,并提供了撤销更改、分支管理、合并代码等功能。 Git最初由Linus Torvalds开发,用于管理Linux内核的源代码。它已成为广泛使用的版本控制系统,不

    2024年02月13日
    浏览(40)
  • git 撤销已经push的代码(本地代码和远程仓库)

    注: HEAD~1 的意思是最近一个版本,也可以写成 HEAD^ 如果需要撤回最近两次提交的commit,可以使用 HEAD~2 ,依次类推。 此时通过 git log 可查看本地代码已经回退到 目标版本。 如果你是项目的owner,在本地 master 分支使用git rebase 或者 git reset撤销了一些commit之后,想要强制推送

    2024年02月11日
    浏览(55)
  • git将远程仓库代码拉下覆盖本地仓库 && git remote&& git push -u 用法

    git将远程仓库代码拉下覆盖本地仓库 记录,在最近代码学习过程中,自己手动改了一下代码,但是忘记修改了哪些,现在想恢复到和远程仓库代码一致。 使用如下三条命令搞定: 1.git fetch --all //获取远程仓库所有代码到本地 2.git reset --hard origin/master //强制将本地代码和远程

    2024年04月15日
    浏览(31)
  • 【Git 操作指南】| 撤销远程仓库的 push 以及 git commit 提交

    执行 git log 查看版本日志,找到目标版本。 执行 git reset --soft version numbere ,如 git reset --soft d8cedc98e008e14a35d3faf424764648fb29d55b ,重置为之前提交的版本,接着执行 git log 查看是否已经退回到之前的版本。 (注意, git reset --soft 只改变了 HEAD 的指向位置,本地代码不会发生改变

    2024年02月16日
    浏览(49)
  • 【解决】IDEA集成Git,无法push到gitee远程仓库

    首先IDEA集成Git,需要将本地仓库和gitee远程仓库关联起来   输入gitee的账号和密码完成关联  前面两步提交到暂存区和本地仓库都很顺利,但是push到远程仓库时报了错Push rejected   Push to origin/master was rejected 分析原因:本地仓库的代码和远程仓库的代码不一致,代码冲突了。

    2024年01月16日
    浏览(34)
  • Ubuntu创建Git项目并push到远程Github

    首先在本地创建git仓库 对刚刚创建的仓库进行修改 将产生的修改提交到本地 在Github远端创建repository 本地与远端创建SSH连接 敲以下命令,敲三次回车,生成密钥 生成的密钥在用户目录下的.ssh文件夹中: 复制公钥:id_rsa.pub (星号是我自己为了加密弄得嘿嘿) 将公钥复制到

    2024年02月12日
    浏览(30)
  • 无需多人协作开发时 只在本地使用git,无需git push到远程仓库

    1.以下部分先介绍的是git在本地的使用。当不涉及到多人协作,只是想要一个工具记录每一次的提交和修改,能轻松还原到某个版本,git已经可以满足这些功能了。 2.只有当涉及到多人协作时,gitlab和github等web仓库才更好的派上用场。 git add 提交至暂存区 git commit 提交至版本

    2024年02月15日
    浏览(45)
  • 关于idea中无法向git远程仓库push或只有部分内容能push成功,其余被拒绝【已解决】

    1.查看项目的根目录中是否有 .git文件           如果没有,则说明当前项目还没有创建本地仓库【当然,我是在默认在项目根创建仓库的,如果在其他目录创建了仓库,自行前往查看】 2.查看除根目录外的其余module下是否有 .git文件 PS:如果是push时只有部分module被提交,那

    2024年02月13日
    浏览(33)
  • Git 新建分支并推送(push)到远程仓库,合并feature分支到develop分支

    在多人协作的项目中经常需要新建feature分支开发一个新功能,或者是要做一些修改,需要新建一个分支。 创建新分支开发完成之后可能需要暂时需要提交到远程,完全提测完成后再合并到develop主分支。 步骤如下: 新建本地分支 各种改动之后,并且通过一下命令把代码缓存

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包