SourceTreeでPull/Push/Fetchができない

2023年6月5日

普段個人開発ではコマンドラインでGitの操作を行っていますが、仕事ではSourceTreeを使えとのことなので最低限の機能はSourceTreeで行っています。その際にある日、突然プル/プッシュ/フェッチができなくなるという事象が起きました。

原因

悪い操作等は何も行っていないのに、SourceTreeで突然以下のようなエラーが発生しました。

git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks fetch origin
fatal: helper error (-1): authentication prompt was canceled
remote: Password authentication is temporarily disabled as part of a brownout. Please use a personal access token instead.
remote: Please see <https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations/> for more information.
fatal: unable to access '<https://github.com/sample/sample.git/>': The requested URL returned error: 403

色々調べてみると、パスワード認証が2021年8月13日以降、廃止されるようです。

コマンドラインでのGit操作、Gitを使用するデスクトップアプリケーション、GitHub.comのGitリポジトリに直接アクセスするアプリやサービスでは、パスワードを用いてリポジトリへアクセスすることができなくなる。だそうです。

GitHubでは、8月13日における本格的なパスワード認証廃止に先立って、次の4回のテスト期間を設ける予定だという。この期間は、一時的にパスワード認証が停止され、パスワードを使ったGit操作ができなくなる。

  • 2021年6月30日 UTC 7時から10時(日本時間 同16時から19時)
  • 2021年6月30日 UTC 16時から19時(日本時間 7月1日1時から4時)
  • 2021年7月28日 UTC 7時から10時(日本時間 同16時から19時)
  • 2021年7月28日 UTC 16時から19時(日本時間 7月29日1時から4時)

(参考にさせていただきました。)

執筆時は7月28日18時なので3個目部分でパスワード認証が停止になっていため、このエラーが出たということになります。

解決方法

OAuth認証を使用してアクセスしてアプリに認証情報を付与しておかなければならないようなので、これからその手順を説明していきます。

GitHubにログインする

WebのGitHubにログインして、認証された状態にしておく

GitHub ログイン

SourceTreeのオプションから認証情報を追加する

SourceTreeのツール⇒オプションをクリックします。

認証タブを開いて、追加をクリックします。

ホスティングサービスをGitHubに変更して、OAuthトークンを再読み込みをクリックします。

するとブラウザ側で認証画面が表示されるので、Authorize atlassianをクリックします。

SourceTreeに戻り、認証に成功となっていてアカウントにGitHubのアカウント名が追加されていれば成功となります。

まとめ

これでプル/プッシュ/フェッチが行えるようになったかと思います。今回はたまたま一時的にパスワード認証が停止されたタイミングで気が付きましたが、2021年8月13日以降は完全にパスワード認証が廃止されてしまうので、認証方法の変更はお早めに・・・