1

我正在使用 GitHub Actions 在我的master分支中编译一些代码,然后我希望它将所有文件推送到另一个分支gh-pages,以便 GitHub Pages 可以生成一个站点。我似乎无法让 Actions 将内容移动mastergh-pages.

name: Build & Jekyll

on:
  push:
    branches:
      - master

jobs:
  build:
    # needs: nothing
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Git stuff
        run: |
          git config user.email "email@email.com"
          git config user.name "Name"
          git add .
          git commit -m "message"
          git push origin master:gh-pages

当我将提交推送到master(触发操作)时,我在操作控制台中收到此错误:

HEAD detached at 19e90c4
nothing to commit, working tree clean
##[error]Process completed with exit code 1.

我不明白为什么,因为如果我git在终端中使用相同的命令,我不会收到任何错误。

我在“Git stuff”下的 Actions run 命令中添加了一行,echo 'Hello, world.' >test.txt但它却给出了这些错误:

[detached HEAD 5edf030] message
  1 file changed, 1 insertion(+)
 create mode 100644 test.txt
error: src refspec master does not match any
error: failed to push some refs to 'https://github.com/iwiedenm/ultimate-jekyll'

解决方案(来自 rmunn 的回答):

name: Build & Jekyll
on:
  push:
    branches:
      - master
jobs:
  build:
    # needs: nothing
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Git stuff
        run: |
          git config user.email "your@email.com"
          git config user.name "Jonsnow"
          git add .
          git commit -m "message"
          git remote set-url origin https://USERNAME:${{secrets.ACCESS_TOKEN}}@github.com/USERNAME/REPO.git
          git remote -v
          git checkout -b gh-pages
          git push origin HEAD:gh-pages --force

不要忘记这USERNAME是您的 GitHub 用户名,ACCESS_TOKEN是在您的存储库的秘密中设置的 GitHub 访问令牌秘密,对存储库具有写入权限,并且REPO是存储库名称。gh-pages如果您愿意,也可以重命名。

4

1 回答 1

3

免责声明:我还没有进入 GitHub 操作测试版,所以虽然我认为这个答案是正确的,但我无法测试它。

GitHubcheckout操作当前使 repo 处于分离的 HEAD 状态,因此没有master可供推送的分支。你应该能够 pushHEAD:gh-pages而不是master:gh-pages.

当然,您问题中的工作流示例对工作目录没有任何更改,因此git add .没有任何内容要添加到索引中,因此git commit不会创建空提交,然后就没有什么要推送的了。但是一旦您进行了一些更改(因为您的编译步骤正在工作,或者因为您已经放入了一个可以执行的步骤echo 'Hello, world.' >> test.txt- 请注意双箭头,以便您将追加到文件中,否则此测试将只工作一次,因为第二次提交相同的内容时,Git 会跳过提交),那么您应该会发现推送HEAD可以满足您的要求。

于 2019-08-21T03:14:34.913 回答