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

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

到目前为止,该项目已经提交了超过13000次。我不想在提交历史页面上无数次地按下“旧”按钮才能到达最初的提交(或第一次提交)。

83907 次浏览

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

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

一旦你有了第一次提交的ID(对象名),你就可以在github上查看它了…之类的……https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e

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

是的,现在有了!(意思是:没有克隆repo,并在本地克隆中应用git log)

自2017年1月以来,你在GitHub上有“使用改进的责备视图更快地导航文件历史记录”。

无论你是在调试回归,还是试图理解一些代码是如何形成当前形状的,你通常都想看看某个特定更改之前的文件是什么样子 使用改进的责备视图,你可以轻松查看文件的任何部分如何随着时间的推移而演变,而无需查看文件的完整历史记录.

.

.

.

下面是一个演示,返回到git/git回购本身最初的最古老的提交(47K+提交)…点击三下!

demo git/git

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

你可以使用init书签导航到GitHub存储库的第一次提交。

初始化

书签来快速地让你到一个回购的第一次提交。

概述

能够快速导航到回购中最老的提交是非常有用的。继续并将书签(链接)拖到书签栏上,并在您想要进入回购的第一次提交时单击它。

使用

转到任何特定的回购的着陆页(e.g. like the one you're on)并单击书签,它将带你到第一页(初始提交)。默认情况下,它跟踪master分支,但如果你在登录页上更改了branch,它将转到该分支的第一次提交。

从README中检索。md在GitHub上


免责声明:我在发布这个答案前几分钟贡献了一个小的Readme更新到init

没有明显的UI可以做到这一点,但是有一种方法可以构造正确的URL来访问提交日志的第一页。

假设我们想要找到dotnet / coreclr库的第一次提交。首先注意存储库中的提交数量:目前是16,634。现在转到提交列表,并单击“Older”一次。URL将是这样的:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

注意+34部分。这是跳过的提交数。将它改为16,634 - 1 - 35每页,这就得到了这个URL,它会把你直接带到coreclr提交历史的第一页。

我想看看nodejs项目最早的一次提交。我已经做到了以下几点。

  1. 访问网站nodejs。然后观察到,此时提交的总数约为233,000次(准确地说是23652次)。

enter image description here

  1. 接下来,我点击了那个提交链接,它把我带到https://github.com/nodejs/node/commits/master,如下所示。

enter image description here

  1. 现在向下滚动到底部,我找到了“更新”和“旧”按钮。“更新”按钮被禁用。我点击旧按钮,它带我到https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. 现在可以看到url有+34。现在我将其更改为23000(因为我观察到的提交数量是23000)。我尝试的新网址是

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

  1. 现在我快到了。通过更多的迭代或旧的按钮点击,我达到了我想要的地方。

你需要使用git的git log --reverse命令。

这将以倒序(从最老的到最新的)返回指定回购的提交历史。

然后,在一些sed魔法的帮助下,你可以得到像第一次提交日期这样的东西(这是我看到的我自己一直需要的东西)。

git log --reverse | sed -n 3p

最终,你可能也想自动化这个(,因为输入命令很无聊,或者根本不可能记住它),所以像这一个这样的shell脚本可能会来拯救你。

你可以通过下面的代码进入提交的第一页,我把它作为一个代码片段保存在Chrome开发工具中。

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


githubFirstCommitsPage();

这个链接在GitHub上提供了一个UI方式来做到这一点。简介:

  1. < p >“见解”选项卡

  2. Network选项卡(左侧)

  3. Shift + <

在项目页面单击选项卡Insights > Contributors。 选择直方图的开头。 单击提交号。 做。< / p >

Github surraw repository, with arrows to the 2 steps: select-histogram-range and click-filtered-commits

PS -绘制一个小范围以获得单个页面。

另一个简单的UI技巧是检查文件.gitignoreREADME.md的git历史,99%的情况下,你会很快找到第一次提交。