! [remote rejected] master -> master (refusing to allow an OAuth App to create or update workflow .github/workflows/* without workflow scope)の対処方法

はじめに

下記のエラーに遭遇しましたので、解決方法を記録、共有します。

! [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

再現手順

  1. Clone with HTTPSでURLを取得、ローカルにクローンを作成する
  2. ローカルのドキュメントを操作する
  3. リモートにプッシュすると、上記のエラーが発生する

原因

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に成功します。

以上、ありがとうございました。