在GitHub中,是否有一种简单的方法可以导航到大型开源项目的最早提交?
到目前为止,该项目已经提交了超过13000次。我不想在提交历史页面上无数次地按下“旧”按钮才能到达最初的提交(或第一次提交)。
在GitHub中,是否有一种简单的方法可以导航到大型开源项目的最早提交?
到目前为止,该项目已经提交了超过13000次。我不想在提交历史页面上无数次地按下“旧”按钮才能到达最初的提交(或第一次提交)。
克隆存储库,用命令行打开并运行$ git log——reverse
这将以相反的顺序显示提交。
一旦你有了第一次提交的ID(对象名),你就可以在github上查看它了…之类的……https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e
2015年2月:在GitHub中,是否有一种简单的方法可以导航到大型开源项目的最早提交?
是的,现在有了!(意思是:不克隆repo,在本地克隆应用git log)
自2017年1月以来,您可以在GitHub上“使用改进的责备视图更快地导航文件历史记录”。
无论您是在调试回归,还是试图理解某些代码是如何形成当前形状的,您通常都希望看到某个特定更改之前的文件是什么样子。 使用改进的责备视图,您可以轻松查看文件的任何部分是如何随着时间的推移而演变的,而无需查看文件的完整历史记录。
这里是一个演示,返回到git/git回购本身最初的最古老的提交(47K+提交)…点击三下!
这里的技巧是选择一个可能在第一次(或非常早期)提交中找到的文件,比如README.md。
你可以使用init bookmarklet导航到GitHub存储库的第一次提交。
INIT A bookmarklet to quickly get you to the first commit of a repo. Overview Being able to quickly navigate to the oldest commit in a repo is quite helpful. Go ahead and drag the bookmarklet (link) onto your bookmark bar and click it whenever you'd like to go to the first commit of a repo. Usage Go to any particular repo's landing page (e.g. like the one you're on) and click the bookmarklet, which will take you to the first page (initial commit). By default, it tracks the master branch, but if you change the branch on the landing page, it will go to that branch's first commit. Retrieved from README.md on GitHub
免责声明:在发布这个答案前几分钟,我对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项目最早的一次提交。我已经做到了以下几点。
访问站点nodejs。然后观察到,此时提交的总数约为233,000次(准确地说是23652次)。
接下来,我点击了提交链接,将我带到https://github.com/nodejs/node/commits/master,如下所示。
现在向下滚动到底部,我找到了“更新”和“旧”按钮。“更新”按钮被禁用。我点击了旧的按钮,它把我带到了https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34 现在可以看到url有+34。现在我将其更改为23000(因为我观察到的提交数量是23000)。我尝试的新网址是
https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+23000
现在我快到了。通过更多的迭代或旧的按钮点击,我达到了我想要的地方。
需要使用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();