git - github 是否记得提交 ID?

标签 git github

几天来,我一直在为 Scrollback 项目重写 install.sh 文件,因为我是唯一一个在本地做这件事的人,所以我一直在修改同一个提交,偶尔推送一次到我的 fork 上掌握。 (请忽略此处的最佳做法,我是一个人工作)。

我记得在这期间,我曾通过电子邮件向某人展示我完成了一半的工作,URL https://github.com/sindhus/scrollback/blob/8d8f7f414383499c2ab6fec586b4c9665a41c7aa/install.sh

现在由于一些困惑,我在本地丢失了我的工作(想想 rm -rf),我记得在此之前 push 。所以 github 在某些时候确实看到了我重新设置的 install.sh 提交 ID。

如您所见,上面的 URL 允许我通过提交 ID 访问此 blob。 但是我无法在本地访问它,因为同一个 repo 被强制推送。

我的问题是如何让 github 向我显示文件的所有提交 ID?无论路径如何,它可能知道的该文件的所有 ID。如果我必须使用他们的 API,我不介意,但我想要一些想法来深入研究它。

谢谢!

最佳答案

My question how do I get github to show me all commit IDs for a file EVER

如果您偶尔强制推送 (git push --force) 修改后的提交,则该提交 8d8f7 已被 more recent commit with a different SHA 替换.

这意味着 8d8f7 现在仅在 reflog 中引用GitHub 存储库的一部分,只有 GitHub 支持人员可以让您访问
克隆存储库不会在该克隆存储库的本地历史记录中包含 8d8f7。


GitHub“reflog”:从 GitHub Events API 推送事件

实际上是OP sindhus指出in the comments通过 Recovering a commit from Github’s Reflog 到“John Engelman” :

GitHub Events API允许浏览最近的事件:

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

要查找的是“pushEvent”。

然后可以直接在 GitHub 上创建一个分支以使该提交再次可见(因为不再悬空,而是被一个实际对象引用,如分支):

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

# JSON request
{
  "ref": "refs/heads/D-commit",
  "sha": "384f275933d5b762cdb27175aeff1263a8a7b7f7"
}

你可能 need to use a token for the authentication .

关于git - github 是否记得提交 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28958327/

相关文章:

git - 统一差异 : What does @@ mean?

通过 GitHub Actions (.yml) 部署的 Azure 静态 Web 应用程序在私有(private) npm 包上出现 404 错误

github - 使用提交消息关闭 Github 中的多个问题

git - 典型的单分支 git 工作流程

git - 如何在 git 上命名一个(无分支)分支

github - 在 Github 中启用组织级别的分支保护规则

Ruby、Sinatra、omniauth-github 身份验证失败回调错误

git - 将远程分支重置为之前的提交

git subtree 将更改推回子树项目

Git 状态将奇怪的字符串显示为未跟踪的文件