每个GitHub存储库都可以拥有(或可以是)可以用Jekyll构建的GitHub Pages网站。每次您推送新提交时,GitHub都会构建该站点。
有没有办法在不推动新提交的情况下强制刷新Github Pages网站?
每个GitHub存储库都可以拥有(或可以是)可以用Jekyll构建的GitHub Pages网站。每次您推送新提交时,GitHub都会构建该站点。
有没有办法在不推动新提交的情况下强制刷新Github Pages网站?
Answers:
来自GitHub支持,2014年6月7日:
当前无法在不将提交推送到适当分支的情况下手动触发重建。
正如Andy在注释中指出的那样,您可以使用以下命令来推送空提交:
git commit -m 'rebuild pages' --allow-empty
git push origin <branch-name>
多亏了GitHub Actions,触发每日发布相当容易:https : //stackoverflow.com/a/61706020/4548500。
git log
如果您需要快速的脚本解决方案,请在这里。只需执行一次以下任务,然后在您想要重建GitHub页面时运行脚本。
Settings > Developer settings > Personal access tokens > Generate new token
。repo
范围。创建一个名为的文件RebuildPage.sh
并添加以下行:
#!/bin/bash
curl -u yourname:yourtoken -X POST https://api.github.com/repos/yourname/yourrepo/pages/builds
这里,
yourname
为您的GitHub用户名。yourtoken
为您复制的个人访问令牌。yourrepo
用您的存储库名称替换。如果您使用Windows 10:
#!/bin/bash
从脚本中删除第一行(),并将脚本另存为RebuildPage.bat
。(即替代.sh
与.bat
在脚本文件名)替代上述方法:要获得运行.sh
文件的双击功能,请执行以下操作:
bash.exe
为.sh
文件的默认程序。打开regedit.exe
并编辑HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command
。将(Default)
值设置为:
"C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
现在,即使您想重建GitHub页面,也可以双击脚本。做完了!
如果使用Linux / Mac,则运行脚本与运行其他脚本相同。做完了!
该解决方案利用了GitHub REST API v3的API。这是API的官方文档。
我有一段时间了这个问题,并且推送到master分支上并没有改变任何东西myapp.github.io
,有两个原因:
1-建立
无论我尝试将其工作推向master多少次,构建都不会启动。我通过在Github在线编辑器中修改文件找到了一种解决方法(打开index.html并在Github网站上进行编辑,然后提交)
2-缓存问题
即使构建成功后,我仍然会在上看到完全相同的页面myapp.github.io
,并且用硬重新加载Ctrl + Shift + R
也无法解决它。相反,如果使用的是Chrome,请检查您的页面,进入Application
标签,在左侧菜单中选择“清除存储空间”,然后单击菜单底部的“清除站点数据”。
现在可以使用GitHub Actions,这很简单:
# File: .github/workflows/refresh.yml
name: Refresh
on:
schedule:
- cron: '0 3 * * *' # Runs every day at 3am
jobs:
refresh:
runs-on: ubuntu-latest
steps:
- name: Trigger GitHub pages rebuild
run: |
curl --fail --request POST \
--url https://api.github.com/repos/${{ github.repository }}/pages/builds \
--header "Authorization: Bearer $USER_TOKEN"
env:
# You must create a personal token with repo access as GitHub does
# not yet support server-to-server page builds.
USER_TOKEN: ${{ secrets.USER_TOKEN }}
执行此操作的示例仓库:https : //github.com/SUPERCILEX/personal-website/actions
网页API:https://developer.github.com/v3/repos/pages/#request-a-page-build
即使在将更改推送到GitHub存储库后,今天仍然看不到更改。然后,我检查了存储库设置以获取更多信息,在那里,所有这些时间我都可以看到构建失败,这就是我无法看到更改的原因。
您可能还会看到一条消息“您的站点在构建时出现问题:无法构建页面。请稍后重试。”
然后,我检查了我最近的提交,并试图找出导致此问题的原因。最后,我能够解决此问题。
标签(,)中还有一个逗号,引起了这个问题。
如果您的.md文件中有任何问题,您将不会收到相关的错误消息。如果您遇到相同的问题,建议您检查构建状态并比较更改。
空提交对我不起作用,但是基于@benett答案,这对我有用:
打开邮递员,使用以下URL创建一个新请求:https ://api.github.com/repos/ [user_name] / [repo_name] / pages / builds (用您的名称和repo替换),然后选择POST方法。
在运行它之前,请转到headers
选项卡并添加一个Accept
具有以下值的新密钥application/vnd.github.mister-fantastic-preview+json
现在,您可以运行它并再次访问您的页面。
{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }
。也许因为我的回购是私人的?
从GitHub API的v3版本开始,这是可行的,尽管目前处于预览
https://developer.github.com/v3/repos/pages/#request-a-page-build
POST /repos/:owner/:repo/pages/builds
您可能已经收到来自GitHub的电子邮件,通知您,当您将Jekyll推送到自己的网站时,Jekyll无法成功构建您的网站gh-pages
。在这种情况下,您可以尝试强制推动以触发另一个构建。
如果您在最终网站上使用专用文件夹(假设是public
文件夹),则可以尝试重建文件夹并将该文件夹添加到提交的更改中。之后,您需要将这些文件拆分到您的gh-pages
分支中,并强制它们触发另一个构建,即使这些文件根本没有更改。下面的其他代码只是public
为了方便起见删除了该文件夹的提交,并将其从本地文件系统中删除了。
git add public
git commit -am ":bug: triggering another jekyll build"
git push origin $(git subtree split --prefix public master):gh-pages --force
git reset HEAD~1
rm -rf public
如果有未提交的更改不属于最终站点,则可以使用以下命令存储它们。
git stash
然后执行上面的命令来手动强制Jekyll构建并取消隐藏它们。
git stash pop