actions/checkout@v2
版本2的checkout解决了分离HEAD状态问题并简化了推送到源的流程。
name: Push commit
on: push
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Create report file
run: date +%s > report.txt
- name: Commit report
run: |
git config --global user.name 'Your Name'
git config --global user.email 'your-username@users.noreply.github.com'
git commit -am "Automated report"
git push
如果需要推送事件触发其他工作流,请使用具有repo
作用域的个人访问令牌。
- uses: actions/checkout@v2
with:
token: ${{ secrets.PAT }}
actions / checkout@v1 (原答案)
问题在于 actions / checkout @ v1
操作会使git存储库处于分离的HEAD状态。 有关更详细信息,请参见此问题的链接。
我成功使用的解决方法是设置远程如下:
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/username/repository
您可能还需要进行结账。您可以从 GITHUB_REF
中提取分支名称:
git checkout "${GITHUB_REF:11}"
这里是一个完整的例子,用以演示。
name: Push commit example
on: push
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Create report file
run: date +%s > report.txt
- name: Commit report
run: |
git config --global user.name 'Your Name'
git config --global user.email 'your-username@users.noreply.github.com'
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY
git checkout "${GITHUB_REF:11}"
git commit -am "Automated report"
git push
顺便说一下,我编写了一个GitHub动作,可以帮助你实现你想要做的事情。它将在工作流期间本地所做的任何更改提交到新分支并提出拉取请求。
https://github.com/peter-evans/create-pull-request
此外,请参阅此相关问题和答案。从GitHub动作推送到源
git add -A
步骤前添加了这行代码,并将/username/repository
更改为我的存储库名称,但仍然出现错误,尽管现在是另一种错误:remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/MyOrg/MyRepo/'
。谢谢你分享你的操作,我会仔细研究它。 - Iljax-access-token:
部分的情况下失败了。 - ConorSheehan1token
参数运行actions/checkout
。在等待v2的过程中,我正在使用带有token
参数的actions/checkout@e8bd1dffb6451bb0d84dbcd3ed059daca1371180
,并且它可以很好地推送而不需要触及任何远程设置...至少在公共存储库上(没有任何需要自动提交以确认其是否适用于私人存储库)。 - Samira