如何导航到Github存储库中的最早提交?


151

在GitHub中,有没有一种简便的方法可以导航到大型开源项目的最早提交?

截止到今天,该项目已提交了13,000多个项目。我不需要数百次按提交历史页面上的“较旧”按钮来进行初始提交(或第一次提交)。


2
您是否考虑过克隆存储库以进行本地导航?
jub0bs 2015年


数据洞察/贡献者显示了对master分支的完整提交。
制造商史蒂夫

Answers:


101

克隆存储库,使用命令行打开并运行 $ git log --reverse

这将以相反的顺序显示提交。

然后,一旦有了第一次提交的ID(Object Name),就可以在github上查看它…… https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


15
我不敢相信我必须筛选出多少个奇怪,过于复杂的公司才能找到一个简单,合理的答案。谢谢。
Sammitch

7
一个调整,我要在其中添加onelinearg,git log --reverse --oneline以便您可以将其作为列表查看
rynmrtn

而且,如果您使用的是Windows命令提示符,并且想要避免被Vim(?)所吸引,请使用git log --reverse --oneline | more。标准more行为,按Ctrl + C退出。
Sinjai

82

没有明显的UI可以执行此操作,但是有一种方法可以构造正确的URL以转到提交日志的第一页。

假设我们想找到dotnet / coreclr存储库的第一次提交。首先记下存储库中的提交数:目前为16,634。现在去提交的列表,然后单击“老” 一次。该URL将是这样的:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

注意+34零件。那就是跳过了多少提交。将其更改为每页16,634减去1减去35,这将为我们提供此URL,使您直接进入coreclr提交历史记录的第一页。


4
好的,我创建了一个书签来执行此操作。github.com/bpceee/oldest
bpceee

这是查看项目提交列表中的初始提交的好答案。
线圈

哈哈,这比接受的答案中所建议的要快;-)
aderchox

46

2015 2月:在GitHub中,有没有一种简便的方法可以导航到大型开源项目的最早提交?

是的,现在有!(意思是:克隆仓库,而是申请git log本地克隆)

从2017年1月开始,您就可以在GitHub上“ 通过改进的责备视图更快地浏览文件历史记录 ”。

无论是调试回归还是试图了解某些代码如何具有当前形状,您通常都希望在进行特定更改之前先查看文件的外观。
使用改进的非常规视图,您可以轻松查看文件的任何部分随时间的变化,而无需查看文件的完整历史记录

这是一个演示,只需单击三下,就可以返回git / git repo本身的原始最早提交(47K +次提交)!

演示git / git

这里的技巧是选择一个可能在第一次(或很早)提交中找到的文件,例如README.md


8
通常这是可行的,但是它假定您知道创建存储库时存在哪些文件,并且可以找到自创建以来未更改过许多行的行。
Wilfred Hughes

1
@WilfredHughes我对Go使用了此方法,将32,986次提交跳回了第一次提交,恰好是一个有趣的复活节彩蛋。在这种情况下,自述文件直到开始时都没有返回,因此我通过按下Browse files并打开另一个文件的责任来重复该过程。
andrewarchi

@andrewarchi很好。实际上,最初的几次提交是Easter-eggs:stackoverflow.com/a/21981037/6309
VonC

我认为这是一种“解决方法”,而@schmalzy的回答更为直接。
吉米·波斯

@JimmyBosse这不是解决方法。这是原始问题的答案。一git log,如果你在本地克隆(潜在的巨大)的回购协议才有效。如果您想“ 导航 ”到第一个提交,就是这样。
VonC

37

我想看一下nodejs项目的最早提交之一。我已经做了以下工作。

  1. 访问了站点nodejs。然后观察到,此时提交的总数大约为两万三千(准确地说是23652)。

在此处输入图片说明

  1. 接下来,我单击了该commits链接,将我带到https://github.com/nodejs/node/commits/master,如下所示。

在此处输入图片说明

  1. 现在向下滚动到底部,我发现了“较新”和“较旧”按钮。较新按钮被禁用。我单击了较旧的按钮,然后我进入了https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. 现在,请注意该网址具有+34。现在,我将其更改为23000(因为我观察到的提交数为23000)。所以我尝试的新网址是

https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+23000

  1. 现在我快到了。再进行几次迭代或通过单击较旧的按钮,我便达到了所需的位置。

2
这是您上面的答案2答案的重复吗?stackoverflow.com/a/49647826
Edric,

2
是重复的答案,但我喜欢这些图像,因此更具吸引力。
winner_joiner

7

您可以使用init bookmarklet导航到GitHub存储库的第一次提交。

在里面

一个书签,可让您快速进行回购的首次提交。

总览

能够快速导航到存储库中最旧的提交非常有帮助。继续,将小书签(链接)拖到书签栏上,并在需要进行第一次回购时单击它。

用法

转到任何特定存储库的登录页面(e.g. like the one you're on),然后单击书签,这将带您到第一页(初始提交)。默认情况下,它跟踪master分支,但是如果您更改branch登录页面上的,它将转到该分支的第一次提交。

取自GitHub上的README.md


免责声明:在发布此答案之前,我在几分钟内对init进行了小幅更新


7

您可以通过以下内容进入提交的第一页,我将其保留为Chrome开发工具中的一部分。

function githubFirstCommitsPage() {
  let el = document.querySelector('.repository-content');
  let base = el.querySelector('a[data-pjax]').href;
  let count = el.querySelector('.commits .num')
    .textContent
    .trim()
    .replace(/[^\d\.\-]/g, "");
  count = count-36;
  let sha = el.querySelector('.commit-tease-sha')
    .href
    .split('/');
  sha = sha[sha.length-1];
  window.location = `${base}?after=${sha}+${count}`;   
}

githubFirstCommitsPage();

1
谢谢!我不知道您可以保存这样的代码片段,因此您的帖子在两个方面都很有帮助。
bmacnaughton

6

您需要使用 git log --reverse git命令。

这将以相反的顺序(最旧到最新)返回指定存储库的提交历史。

然后,借助一些sed魔术,您可能会遇到第一次提交的日期(这是我一直看到的自己一直需要的日期)。

git log --reverse | sed -n 3p

最终,你可能想以及(,因为它主要是要么无聊键入命令或只是不可能记住它)自动执行此,因此喜欢的shell脚本这一个可能前来救援。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.