使用 GitHub 操作将一个分支替换为当前分支
Replace one branch with current branch using GitHub Actions
我正在使用 GitHub 操作在我的 master
分支中编译一些代码,然后我希望它将所有文件推送到另一个分支 gh-pages
以便 GitHub 页面可以生成一个站点。我似乎无法获取将 master
的内容移动到 gh-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' echo 'Hello, world.' >test.txt
下的 Actions 运行 命令中添加了一行,但它给出了这些错误:
[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'
SOLUTION(来自 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
。
免责声明:我还没有进入 GitHub 操作测试版,所以虽然我认为这个答案是正确的,但我无法测试它。
GitHub checkout
操作当前 leaves the repo in a detached HEAD state,因此没有 master
分支供其推送。您应该能够按 HEAD:gh-pages
而不是 master:gh-pages
.
当然,您问题中的工作流示例没有对工作目录进行任何更改,因此 git add .
没有任何内容可添加到索引中,因此 git commit
不会创建空提交,并且那么就没有什么可推的了。但是一旦您进行了一些更改(因为您的编译步骤正在运行,或者因为您已经执行了 echo 'Hello, world.' >> test.txt
的步骤 - 请注意双箭头,以便您将附加到文件,否则这个测试只会工作一次,因为你第二次提交相同的内容并且 Git 会跳过提交),那么你应该发现推送 HEAD
可以满足你的要求。
我正在使用 GitHub 操作在我的 master
分支中编译一些代码,然后我希望它将所有文件推送到另一个分支 gh-pages
以便 GitHub 页面可以生成一个站点。我似乎无法获取将 master
的内容移动到 gh-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' echo 'Hello, world.' >test.txt
下的 Actions 运行 命令中添加了一行,但它给出了这些错误:
[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'
SOLUTION(来自 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
。
免责声明:我还没有进入 GitHub 操作测试版,所以虽然我认为这个答案是正确的,但我无法测试它。
GitHub checkout
操作当前 leaves the repo in a detached HEAD state,因此没有 master
分支供其推送。您应该能够按 HEAD:gh-pages
而不是 master:gh-pages
.
当然,您问题中的工作流示例没有对工作目录进行任何更改,因此 git add .
没有任何内容可添加到索引中,因此 git commit
不会创建空提交,并且那么就没有什么可推的了。但是一旦您进行了一些更改(因为您的编译步骤正在运行,或者因为您已经执行了 echo 'Hello, world.' >> test.txt
的步骤 - 请注意双箭头,以便您将附加到文件,否则这个测试只会工作一次,因为你第二次提交相同的内容并且 Git 会跳过提交),那么你应该发现推送 HEAD
可以满足你的要求。