每个 GitHub 仓库可以 有(或者生存)一个 GitHub 页面网站,可以用 Jekyll 构建。GitHub 在您每次推送新提交时都会构建站点。 有没有一种方法可以强制刷新 Github 页面而不需要推送新的提交?
来自 GitHub 的支持,2014-06-07:
当前不可能手动触发重新构建,而不向适当的分支推送提交。
正如 Andy 在评论中指出的,您可以使用以下命令推送一个空提交:
git commit -m 'rebuild pages' --allow-empty git push origin <branch-name>
多亏了 GitHub Actions,触发日常发布变得相当容易: https://stackoverflow.com/a/61706020/4548500。
我有这个问题一段时间了,并推到主分行没有改变 myapp.github.io的任何东西,原因有两个:
myapp.github.io
1-建造
无论我多少次试图把我的工作主人,建设不会开始。我通过在 Github 在线编辑器中修改我的文件找到了一个变通方法(打开 index.html 并在 Github 网站上编辑它,然后提交)
2-缓存问题
即使在一个成功的构建之后,我仍然可以在 myapp.github.io上看到完全相同的页面,用 Ctrl + Shift + R重新加载并不能解决这个问题。相反,如果使用 Chrome 浏览器,检查你的页面,进入 Application选项卡,在左侧菜单中选择“清除存储”,然后点击菜单底部的“清除网站数据”。
Ctrl + Shift + R
Application
您可能已经收到来自 GitHub 的电子邮件,告诉您 Jekyll 没有成功地构建您的站点,当您把它推到您的 gh-pages。如果是这种情况,您可以尝试强制 push 触发另一个构建。
gh-pages
如果您使用一个专用的文件夹为最终网站,让我们说一个 public文件夹,您可以尝试重建您的文件夹,并添加到您提交的更改文件夹。之后,您需要将这些文件分割到您的 gh-pages分支,并强制它们触发另一个构建,即使这些文件根本没有改变。以下代码的其余部分只是为了方便删除 public文件夹的提交,并将其从本地文件系统中删除。
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
这在 GitHub API < strike > 的 v3中是可行的,尽管它目前处于预览阶段 Https://developer.github.com/v3/repos/pages/#request-a-page-build
POST /repos/:owner/:repo/pages/builds
空白提交对我不起作用,但根据@benett 的回答,这对我起作用:
打开 Postman,用这个 URL 创建一个新请求: https://api.github.com/repos/[user_name]/[repo_name]/pages/builds(用您的名字和 repo 替换) ,并选择 POST 方法。
在运行它之前,转到 headers选项卡并添加一个值为 application/vnd.github.mister-fantastic-preview+json的新键 Accept
headers
application/vnd.github.mister-fantastic-preview+json
Accept
现在您可以运行它并再次访问您的页面。
如果您想要一个快速的脚本解决方案,这里是。只需执行下列任务一次,并在需要重新构建 GitHub 页面时运行该脚本。
Settings > Developer settings > Personal access tokens > Generate new token
repo
创建一个名为 RebuildPage.sh的文件并添加以下行:
RebuildPage.sh
#!/bin/bash curl -u yourname:yourtoken -X POST https://api.github.com/repos/yourname/yourrepo/pages/builds
给你,
yourname
yourtoken
yourrepo
如果你使用 Windows10:
#!/bin/bash
RebuildPage.bat
.bat
.sh
替代上述要点: 为了获得运行 .sh文件的双击特性:
bash.exe
打开 regedit.exe并编辑 HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command。将 (Default)值设置为:
regedit.exe
HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command
(Default)
"C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
Now double-click the script wheneven you want to rebuild your GitHub page. Done!
If you use Linux/Mac, running the script is as same as running other scripts. Done!
This solution utilizes a API of GitHub REST API v3. Here is the official documentation for the API.
即使在我将更改推送到 GitHub 存储库之后,我今天也无法看到更改。然后我检查了我的存储库设置以获取更多信息,在那里我可以看到,所有这些次构建都失败了,这就是我无法看到更改的原因。
您可能还会看到一条消息“您的站点在构建时遇到问题: 无法构建页面。请稍后再试。”
然后我检查了最近的提交,试图找出导致这个问题的原因。最后我解决了这个问题。
有一个 在标记(,)中添加逗号,导致了这个问题。
如果您的。Md 档案。我建议您检查构建状态,如果面临同样的问题,则比较更改。
既然 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 Actions 显示我的站点已经部署,我也很难刷新。
切换出版来源对我来说很有用。我把出版来源从母版切换到内容,然后再切换回母版。你可以检查 如何更改这里分公司的出版来源
我也经历过同样的问题,为了解决这个问题,我开发了一个 githu 操作,它可以与调度程序一起工作,并支持同时更新多个 gh 页面。
按照 https://github.com/marketplace/actions/jekyll-update-github-pages-without-new-commit ,操作更新 gh- 页面而不生成新的提交。
name: Update all github pages on: schedule: - cron: "30 0 * * *" jobs: github-pages: runs-on: ubuntu-latest name: Update Github Pages Initiatives steps: - name: Jekyll update github pages without new commit uses: DP6/jekyll-update-pages-action@v1.0.1 with: DEPLOY_TOKEN: $\{\{ secrets.GH_PAGES_DEPLOY_TOKEN }} USER: $\{\{ secrets.GH_PAGES_USER }} FILTER: 'is%3Apublic%20org%3Adp6'
日志动作
我从其他答案推测这曾经很困难?