我有一个带有
main
分支和 testing
分支的存储库。我在testing
分支进行修改,推送,打开PR。这会触发以下工作流程(借自https://stackoverflow.com/a/73687159/659117),该工作流程创建一个文件(例如,来自乳胶文件的 PDF)并提交它:
name: Example workflow
on:
pull_request:
branches: [ main ]
jobs:
example_job:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- shell: bash
run: |
date > 1.txt
git config user.name github-actions
git config user.email [email protected]
git add 1.txt
git commit -m "updated"
git push origin HEAD:${{ github.head_ref }}
到目前为止,一切顺利:文件
1.txt
已创建并添加到分支 testing
,我可以在 PR 中看到提交。
但是,如果我现在对代码(本地)进行另一次更改并推送它,则提交将被拒绝并出现错误:
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
我知道我可以通过做
push -f
来覆盖它,但这不是我想要定期做的事情。那么我会建立一个工作流程来执行此操作,而不会遇到这个问题吗?我在这里错过了什么吗?
您需要将 github-action 所做的更改拉到本地系统上。我想你已经知道了。
在 git 中有本地钩子,您可以创建本地预提交或本地预推送钩子,它们在推送或提交之前自动进行拉取。