모든 GitHub의 저장소는 할 수 있다 ( 또는 수 A) GitHub의 페이지 지킬으로 구축 할 수 있습니다 웹 사이트를. GitHub는 새 커밋을 푸시 할 때마다 사이트를 빌드합니다.
새 커밋을 푸시하지 않고 Github 페이지 웹 사이트를 강제로 새로 고치는 방법이 있습니까?
모든 GitHub의 저장소는 할 수 있다 ( 또는 수 A) GitHub의 페이지 지킬으로 구축 할 수 있습니다 웹 사이트를. 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 .
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에 대한 공식 문서입니다.
나는 잠시 동안이 문제가 있었고 마스터 브랜치로 푸시해도 myapp.github.io
두 가지 이유로 아무것도 변경되지 않았습니다 .
1-빌드
아무리 많은 시간을 마스터에 밀어 넣어도 빌드가 시작되지 않았습니다. 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 답변에 따르면 이것은 나를 위해 일했습니다.
Postman을 열고 다음 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" }
. 내 저장소가 비공개이기 때문일까요?
이것은 현재 미리보기
https://developer.github.com/v3/repos/pages/#request-a-page-build 에 있지만 GitHub API v3부터 가능합니다.
POST /repos/:owner/:repo/pages/builds
GitHub에서 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