github会记住提交ID吗?

Sin*_*u S 6 git github

几天后,我正在为Scrollback项目重新编写install.sh文件,因为我是唯一一个在本地工作并且在本地执行的人,所以我一直在提交修改相同的提交,偶尔推送到我的fork的主人.(请忽略这里的最佳做法,我一个人工作).

在此期间,我记得通过电子邮件向某人展示我完成的工作,网址为https://github.com/sindhus/scrollback/blob/8d8f7f414383499c2ab6fec586b4c9665a41c7aa/install.sh

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

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

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

谢谢!

Von*_*onC 12

我的问题如何让github向我显示文件EVER的所有提交ID

如果你git push --force偶尔强制push()你修改过的提交,那么提交8d8f7已被更新的提交替换为不同的SHA.

这意味着8d8f7现在只是GitHub repo 的reflog中的引用只有GitHub支持才能让您访问.
克隆回购将不包括该克隆回购的本地历史中的8d8f7.


GitHub"reflog":从GitHub Events API推送事件

实际上OP sindhus John Engelman 的评论中指出" 从Github的Reflog中恢复提交 " :

GitHub的活动API允许通过的最后一个事件浏览:

curl https://api.github.com/repos/<user>/<repo>/events
Run Code Online (Sandbox Code Playgroud)

"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"
}
Run Code Online (Sandbox Code Playgroud)

您可能需要使用令牌进行身份验证.