gpt4 book ai didi

git:如何在没有以前版本的情况下撤消我最后的 "git push -f"?

转载 作者:行者123 更新时间:2023-12-04 01:03:48 26 4
gpt4 key购买 nike

我在 github 上有一个 repo1 并且有最新的干净版本(我们称它为 “latest-version”)。

我克隆了它但是...

我做到了:

rm -fr .git
git init
git remote add origin <repo1 url>"

然后,我修改了各种文件并运行 "git push -f origin master" 覆盖所有文件。

在我的本地 .git 目录中没有以前的历史记录/日志,我如何删除我的最后一次推送以便我可以取回 repo1 上的 “latest-version” 文件?

也就是说,我希望我没有运行上述任何命令,只有原始的 "latest-version" 文件。

提前致谢!

最佳答案

你可以试试 GitHub 的 reflog。

取自:

首先,使用 GitHub 的事件 API 检索提交 SHA:

$ curl https://api.github.com/repos/<user>/<repo>/events

这将返回一个 JSON 响应,您可以通读它以找到丢失分支的最后一次提交。使用提交消息和大概时间来缩小搜索范围。

接下来,使用 GitHub 的 Refs API 创建一个指向该提交的新分支:

$ curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"ref": "refs/heads/your-new-branch", "sha": "384f275933d5b762cdb27175aeff1263a8a7b7f7"}' https://api.github.com/repos/<user>/<repo>/git/refs

上面JSON中的“ref”是我们要创建的Git ref,它必须refs/heads/your-new-branch的形式,其中your-new-branch 是我们要在 Git 中创建的分支的名称。“sha”是我们希望这个新分支指向的提交。

现在,如果您在 GitHub 中 pull 您的存储库,您将看到新分支,并且执行 git fetch 会将新分支检索到您的本地存储库。

您可能需要进行身份验证。这是身份验证文档 https://docs.github.com/en/rest/overview/resources-in-the-rest-api#authentication

关于git:如何在没有以前版本的情况下撤消我最后的 "git push -f"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67205465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com