GitHub要点:RAW永久链接不会更新

时间:2017-11-02 01:12:30

标签: git github

我有一个gist原始版本的URL,但它并不总是更新。说我得到原始链接

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

但是我改变了那个要点的内容,URL会改变,第一个链接WONT包含更改。

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

如何制作永久包含所有更改的1 PERMANENT链接,而不仅仅是该链接的修订?

我已尝试使用ID,只是id / raw,但ID甚至不像其他人所说的那样,它更像哈希,有人可以帮忙吗?

更新

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

3 个答案:

答案 0 :(得分:7)

  

ID甚至不像其他人所说的那样,它更像是一个哈希

是的,gist is a git repo

explained here作为Mark Engel

  

想象一下,你想在某处托管一个json配置文件。您也不想自己托管,但更愿意依赖稳定的提供商。

     

您可以使用gist.github.com完成此项工作。

     

例如this gist。您可以看到有2个修订版。

     

如果单击raw,则会获得当前版本

           

在每个版本中,您会看到两个哈希值。

     
      
  • 两个哈希值中的一个哈希值相等。这是要点的哈希
  •   
  • 另一个哈希是提交的哈希值。
  •   
     

如果删除最后一个,则原始文件始终指向最新版本

     

https://gist.githubusercontent.com/mren/17da9837f691acd2e8ae/raw/config.json

答案 1 :(得分:2)

重新启动此链接以澄清混淆。

是的,VonC的答案是对的,

  

如果删除最后一个,原始文件始终指向最新版本

和,

  

永久URL ...将始终“包含所有更改”

但是,它可能需要一段时间才能更新。

今天,我使用 bit.ly 来缩短我的永久网址,但找到它总是指向我设置短网址的最后/初始版本。所以我必须放弃并尝试不同的URL缩短服务。只有在尝试了两三个之后我才意识到问题不在于URL缩短服务端而是要点永久URL端 - 通过直接访问gist永久URL确认,并且 -

今天更新一段时间确实需要超过两三分钟,当我不断更改它以查看错误时。但它最终也会改为最新版本。通过重新访问我的bit.ly缩短的URL确认。

答案 2 :(得分:1)

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

截至 2021 年 5 月,避免与上次提交的缓存相关的延迟的解决方法是使用与 UI 的“原始”按钮相关联的 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 中检索此链接的示例代码如下所示:

用于检索原始要点链接的脚本(绕过与缓存相关的等待时间)

# 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}'