GitHub Gist:RAW永久链接不会更新

8

我有一个链接到gist的URL,但它不总是更新。假设我获得了原始链接。

https://gist.githubusercontent.com/username/27610b513177a762470ac95160c050fd/raw/f567a5ade06c9b8e7c101fe62fa3a4cac07e5bd7/test%2520gist

如果我更改了那个代码片段的内容,URL也会相应更改,但是第一个链接不会包含这些更改。

https://gist.githubusercontent.com/username/27610b513177a762470ac95160c050fd/raw/60e3b421faa7e4e9ea6cd27e4a6ffd4809d3d40e/test%2520gist

我应该如何创建一个永久链接,使其包含所有更改而非仅限于该链接的修订版本?

我尝试过使用ID和ID/raw,但ID并不像其他人说的那样是一个数字,它更像是一个哈希值,有人能帮忙吗?

更新:

我已经尝试了[建议的答案],但它仍然只导向最后一次修订版本,是否存在更新延迟?


1
可能是如何从Github获取gist的原始版本?的重复问题。 - brasofilo
这回答了你的问题吗?gist文件的最新版本是否有永久链接? - Mohammad Ayoub Khan
3个回答

9

这个ID不像其他人说的那样是一个数字,更像是一个哈希值。

是的,gist是一个git仓库

正如这里所解释的,由Mark Engel

假设您想在某个地方托管一个json配置文件。您也不想自己托管它,而是更愿意依赖于一个稳定的提供者。您可以使用gist.github.com完成此任务。例如this gist。您可以看到有两个版本。如果单击“原始”,则会获取当前版本。 在每个版本中,您都会看到两个哈希值。
  • 一个哈希在两个哈希中相等。这是要点的哈希值
  • 另一个哈希是提交的哈希值。
如果删除最后一个,则原始文件始终指向最新版本 https://gist.githubusercontent.com/mren/17da9837f691acd2e8ae/raw/config.json

1
我已经尝试过这个了,但它仍然显示最后一次的修订,它是否在更新上有延迟?我很困惑。 - zhorachu
@zhorachu 我认为你想要一个永久链接到最新版本:https://gist.githubusercontent.com/mren/17da9837f691acd2e8ae/raw/config.json 是一个永久的URL,它将始终“包含所有更改”。 - VonC
@zhorachu 好的,我不知道那个延迟。 - VonC

4
重新澄清一下这个链接,VonC的回答是正确的,如果您删除最后一个部分,原始文件将始终指向最新版本,并且永久URL将始终“包含所有更改”。但是,更新可能确实需要一些时间。今天,我使用bit.ly缩短我的永久URL,但发现它总是指向我设置短网址时的最后/初始版本。因此,我不得不放弃并尝试不同的URL缩短服务。在尝试了两三次之后,我才意识到问题不在于URL缩短服务方面,而是gist永久URL方面--通过直接访问gist永久URL进行确认,有时更新需要两三分钟以上才能完成,当我不断更改以查看出了什么问题时。但它最终也会变成最新版本。通过重新访问我的bit.ly缩短的URL进行确认。

我的回答有一个有趣的补充。+1 - VonC

1

对于那些可能需要编程解决方案的人(例如在网络爬虫期间动态编辑/更新要点)...

截至2021年5月,避免与最后一次提交的缓存相关的延迟的解决方法是使用与UI中“Raw”按钮相关联的URL,如下所示。

RawButton

  • 感兴趣的URL格式应为:https://gist.github.com/{user}/{gist_hash}/raw/{commit_hash}/{filename}

  • 如果您解析与此按钮相关联的链接的DOM,您可以绕过通常使用以下格式链接时所需的2-3分钟延迟:https://gist.github.com/{user}/{gist_hash}/raw

  • 检索Python中此链接的示例代码如下:

脚本以检索原始的Gist链接(绕过与缓存相关的等待时间)

# Python 3.9.1
import requests
from bs4 import BeautifulSoup

repo_url = f'https://gist.githubusercontent.com/{user}/{gist_hash}'
html = requests.get(repo_url).text
soup = BeautifulSoup(html, 'html.parser')
button = soup.find_all('div', class_='file-actions flex-order-2 pt-0') # Finds "Raw" button
raw_url = f"https://gist.github.com/{button[0].contents[1].attrs['href'][1:]}"

> print(raw_url)

'https://gist.githubusercontent.com/{user}/{gist_hash}/raw/{commit_hash}/{filename}'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接