2021年8月13日のパスワード認証廃止に伴い、「個人アクセストークン」に切り替えようとしましたがSousetreeからGitHubにpushできず苦労しました。そこで、解決法のメモを紹介したいと思います。OSはWindows10です。
GitHub側でトークンを作成する手順は簡単ですが、 Soucetree側の設定がうまくいかず時間をとられてしまいました。
なお、私はSoucetreeVer.3.4.5で実行しましたが、Ver.3.4.5は上記の状況とは別にクローンの時にフリーズするエラーがあるようですので、 Ver.3.4.5 はアンインストールして、Ver.3.4.4をインストールした方がよいと思います。
なお、SoucetreeはGitのバージョンとの相性で不安定な動作をすることが多いので、それも確認してみて下さい。
1.エラーの状況
エラーの状況は以下の通りです。
- SoucetreeからGitHubにpushし、Select a credential helperで<no helper>を選択しても、エラーが発生してpushできない。バグ?設定ミス?
- SoucetreeからGitHubにpushし、Select a credential helperでmanagerを選択した時に表示されるWindowにユーザー名、トークンを入力しても、エラーが発生してpushできない。
- Soucetreeからターミナルを起動し、「git push origin master」を実行するとpushできる。
2.解決方法
他に解決方法があるのかもしれませんが、私は以下の手順で解決しました。
(1) トークンの作成
GitHub側でトークンを生成します。なお、以下の操作手順は2023.6.13時点のGitHubの操作方法に更新しました。
- 右上のプロフィール画像 > Settingsをクリック
- 左サイドバーのDeveloper settingsをクリック
- 左サイドバーのPersonal access tokensをクリック
- 左サイドバーのtokens (classic)をクリック
- 右上のプルダウンメニューGenerate new tokenよりGenerate new token(classic)を選択
- noteにトークンの説明を記載(自分用のメモ)
- トークンの有効期限を入力
- Select scopesでトークンの適用範囲をクリック(とりあえず、repoとuserだけをチェック)
- 下部のGenerate tokenをクリック
- トークンをクリップボードにコピー(ページを離れると2度と表示されない)なお、トークンのすぐ右にある「ロ」を二重に重ねたようなマークをクリックするとコピーできます。
(2) Sourcetree側の設定
SourceTree側の設定は以下の通りです。
- ツール > オプション > 認証 > アカウントで追加ボタンをクリック
- ホスティングサービス:Githubを選択
- 優先するプロトコル:HTTPSを選択
- 認証:Basicを選択(あるいは、Personal Access Token)
- ユーザー名:ユーザー名を入力
- 「パスワードを再読込」をクリック
- パスワードに先ほどGitHubでコピーしたトークンを入力(ユーザー名は入力済みになっている)
- OKボタンを押す
(3) トークンの更新 ※参考までに
アカウントの新規作成は上記の通りですが、同じアカウントでトークンを更新する場合には以下の手順で設定します。同じような手順ですので、参考までに。
- ツール > オプション > 認証 >
- 使用するカウントを選択
- 編集をクリック
- ホスティングサービス:Githubが選択されていることを確認
- 優先するプロトコル:HTTPSが選択されていることを確認
- 認証:Basicが選択されていることを確認
- 「パスワードを再読込」をクリック
- パスワードに先ほどGitHubでコピーしたトークンを入力(ユーザー名は入力済みになっている)
- OKボタンを押す
(3) SourceTree側におけるpushの操作手順
以下の手順でpushを行います。上記「(2) Soucetree側の設定」を行わなければ以下の手順でmanagerを選択してもエラーが発生します。
- pushのボタンを押す
- Credential Helper SelectorのWindowが表示されるのでmanagerを選択する。(ここで<no helper>を選択するとエラーになる)
- Selectボタンをクリック
- Credential Helper SelectorのWindowがもう一度表示されるが、再びmanagerを選択し、Selectボタンをクリック
以上で無事にSourceTreeからpushすることができました。