はじめに
下記のエラーに遭遇しましたので、解決方法を記録、共有します。
! [remote rejected] master -> master (refusing to allow an OAuth App to create or update workflow .github/workflows/main.yml without workflow scope)
環境
- macOS 10.15.6
- SourceTree 4.0.2
- GitHub
再現手順
- Clone with HTTPSでURLを取得、ローカルにクローンを作成する
- ローカルのドキュメントを操作する
- リモートにプッシュすると、上記のエラーが発生する
原因
refusing to allow an OAuth App to create or update workflow .github/workflows/main.yml without workflow scope
-> ワークフロースコープなしでは、OAuthアプリのワークフロー作成または更新を拒否します。
クローン元のリポジトリに、GitHub Workflowの設定ファイル.github/workflows/main.yml
が含まれています。OAuthクライアントとHTTPSクローンでは、このファイルを操作する権限がないためエラーが発生します。
対処法
十分なパーミッションをもった認証方法でアクセスします。あなたがGitHubにSSHで接続できない場合は対処法1を、SSHで接続できる場合は対処法2で対処します。
対処法1. Personal Access Token
パーソナルアクセストークンとは、パスワードに変わってGitHub APIにアクセスするための個人認証方法です。パスワードと違い、同一アカウントで複数のトークンを生成し、それぞれのトークンに異なる操作権限を設定できます。万が一トークンが流出した場合は、トークンを個別に失効させることも可能です。
アクセストークンの発行
GitHubのPersonal access tokens設定ページを開き「Generate new token」ボタンでアクセストークンを生成します。
参考記事 : GitHub : 個人アクセストークンを使用する
SourceTreeにアクセストークンを登録する
SourceTreeでアクセストークンを利用するには、GitHubアカウントのパスワードの代わりにアクセストークンを入力します。
参考記事
Windowsの場合、資格情報マネージャーにパーソナルアクセストークンを設定しても、この問題を回避できます。
参考記事 : Git Extensions is a great tool but the credential management is very weak
対処法2. SSH
GitHubにSSHで接続できる場合は、リポジトリのリモートURLを変更する事でこの問題を回避できます。
GitHubへSSH接続する手順は、公式ドキュメントのGitHubにSSHで接続するをご参照ください。
リポジトリのページから、以下の手順でSSH接続用のURLをコピーします。ローカルリポジトリのリモートURLをこのURLに変更すればPushに成功します。
以上、ありがとうございました。