取消

解决包含 GitHub Actions Workflow 的分支无法推送的问题

refusing to allow an OAuth App to create or update workflow {0} without workflow scope.

GitHub 推送失败?试试本文方法。


问题

试图向 GitHub 推送一个分支的时候,出现错误 refusing to allow an OAuth App to create or update workflow {0} without workflow scope

这个错误是说,因为 OAuth 的应用没有指定 workflow 范围,所以无法推送带有更新 workflow 的分支。

虽然我实际上没有对 workflow 做任何更新,但也被拒绝了。所以这个问题必须直接解决,绕不开。

1
2
3
4
5
6
7
8
9
10
11
git.exe push self master:t/walterlv/trigger
Enumerating objects: 17, done.
Counting objects: 100% (17/17), done.
Delta compression using up to 8 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (9/9), 754 bytes | 754.00 KiB/s, done.
Total 9 (delta 8), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (8/8), completed with 8 local objects.
To https://github.com/dotnet-campus/HandyControl.git
! [remote rejected]   master -> t/walterlv/trigger (refusing to allow an OAuth App to create or update workflow `.github/workflows/build.yml` without `workflow` scope)
error: failed to push some refs to 'https://github.com/dotnet-campus/HandyControl.git'

解决

去 GitHub Personal Access Tokens 页面:

生成一个新的 Token。特别注意在生成的时候要勾选 workflow(如果不确定勾选哪些的话,就全部勾选):

生成新的 Token

然后复制新的 Token:

复制新的 Token

打开凭据管理器:

凭据管理器

在 Windows 凭据标签下,找到 GitHub 的几个凭据,然后编辑:

编辑 GitHub 凭据

把密码改成刚刚复制的那个 Token,然后保存:

粘贴并保存密码

如果你那里有很多 GitHub 相关的凭据而不确定是哪一个的话,可以考虑全部删掉。这样下次推送的时候就会要求你输入账号密码,输入那个 Token 作为密码即可。

现在,你就能推送成功了。

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/github-push-failed-without-workflow-scope.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])

登录 GitHub 账号进行评论