github记得提交ID吗?

github记得提交ID吗?,git,github,Git,Github,几天来,我一直在为Scrollback项目重新编写install.sh文件,因为我是唯一一个在本地处理这个文件的人,所以我一直在提交同一个提交,时不时地向我的fork的主程序推一次。(请忽略这里的最佳实践,我是一个人工作的) 在这段时间里,我记得我给某人发了一封电子邮件,上面显示了我完成了一半的工作,URL 现在,由于一些困惑,我在本地的工作中迷失了方向(想想rm-rf),我记得在这之前我一直在努力。所以github在某个时候确实看到了我的重新设置的提交ID install.sh 如您所见,上面

几天来,我一直在为Scrollback项目重新编写install.sh文件,因为我是唯一一个在本地处理这个文件的人,所以我一直在提交同一个提交,时不时地向我的fork的主程序推一次。(请忽略这里的最佳实践,我是一个人工作的)

在这段时间里,我记得我给某人发了一封电子邮件,上面显示了我完成了一半的工作,URL

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

如您所见,上面的URL允许我通过提交ID访问此blob。 然而,我无法在本地访问它,因为同一回购协议是强制推行的

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


谢谢

在本地克隆您的回购协议,然后在您的文件上尝试此操作:

git log --follow install.sh
它应该向您显示可以在github上使用的ID

我的问题是如何让github显示一个文件的所有提交ID

如果偶尔强制推送(
gitpush--force
)修改后的commit,那么commit 8d8f7将被替换为

这意味着8d8f7现在是GitHub回购协议中的唯一参考,只有GitHub支持才能让您访问它。
克隆回购协议不会在该克隆回购协议的本地历史记录中包含8d8f7


GitHub“reflog”:从GitHub事件API推送事件 事实上,该文件通过以下方式向“”指出:

允许浏览最近的事件:

curl https://api.github.com/repos/<user>/<repo>/events
curlhttps://api.github.com/repos///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///git/refs
#JSON请求
{
“ref”:“refs/heads/D-commit”,
“sha”:“384f275933d5b762cdb27175aeff1263a8a7b7f7”
}

你可以。

我没有真正理解这个问题,所以有一些解决方案:

要查看特定文件的所有提交,请执行以下操作:
git日志--遵循文件名


若要签出到旧版本,请查找答案

我不确定是否有一种方法可以跨修订的提交获取文件的所有版本。但是,reflog将包含早期版本的信息,您可以手动提取它们。下面是一个例子

这是我的第一次承诺

echo "a" > a.txt && git add a.txt && git commit -m "Version 0"
在那之后,还有一些补偿

% echo "aa" > a.txt && git add a.txt && git commit --amend -m "Version 1"
% echo "aaa" > a.txt && git add a.txt && git commit --amend -m "Version 2"
% echo "aaaa" > a.txt && git add a.txt && git commit --amend -m "Version 3"
% echo "aaaaa" > a.txt && git add a.txt && git commit --amend -m "Version 4"
而我的日志只有一个条目

%git日志--一行 a8d6c39版本4

我的reflog拥有一切

% git reflog master
a8d6c39 master@{0}: commit (amend): Version 4
cf87b8f master@{1}: commit (amend): Version 3
c45a91e master@{2}: commit (amend): Version 2
63c7f5a master@{3}: commit (amend): Version 1
f2b3336 master@{4}: commit (initial): Version 0
因此,如果您想查看文件在版本4、版本3等中的外观,可以这样做

% git show a8d6c39:a.txt
aaaaa
% git show cf87b8f:a.txt
aaaa
% git show c45a91e:a.txt
aaa
% git show 63c7f5a:a.txt
aa
% git show f2b3336:a.txt
a

一般来说,即使您是唯一的开发人员,持续修改的“过程”也是不好的。这是你在最后一次犯错误时应该做的一件一次性的事情

谢谢你,你正确理解了这个问题。有没有办法通过他们的API获取github repo的reflog?找到了@辛德胡斯:伟大的发现!我已经在答案中加入了它,以获得更多的可见性,并添加了额外的链接。我的保护程序!在git push--mirror之后还原了已删除的分支_
% git show a8d6c39:a.txt
aaaaa
% git show cf87b8f:a.txt
aaaa
% git show c45a91e:a.txt
aaa
% git show 63c7f5a:a.txt
aa
% git show f2b3336:a.txt
a