概要
久しぶりにSourceTreeからGitHubのリポジトリに変更をpush
しようとした際、エラーが発生して少し詰まったので、備忘録的に解決方法を共有します。
解決方法まとめ
- SourceTreeからGitHubに接続するためにPersonal Access Tokensが必要
- SourceTreeの
Advanced
設定から、事前にGitHubアカウント情報を削除 -
Personal Access Token発行時の推奨権限:
- Contents:Read and write
- Commit Statuses:Read and write
- Pull Requests permissions:Read and write
- Workflows permissions:Read and write
背景
SourceTreeからGitHubへのpush
を試みた際に、認証エラーが発生し接続ができなくなりました。
-
SourceTree経由の
pull
は成功 - コマンドライン上での
git push
も正常 - しかし、SourceTreeからの
push
だけ失敗
原因
GitHubではセキュリティ向上のため、パスワードでの認証を廃止し、Personal Access Tokenの使用が必須になっているみたいです。(多分結構前から、、、)
Personal Access Tokenの発行時には適切な権限を設定する必要があります。
対応手順
1. 古い認証情報をSourceTreeから削除する。
SourceTree > Settings > Advanced
から、GitHubのアカウント情報を削除します。
日本語設定の場合、「Advanced
」ボタンが押せないことがあるため、その場合は言語を英語に変更します。
2. Personal Access Tokens発行画面にアクセス
GithubのPersonal Access Tokens発行画面にアクセスし、Fine-grained Tokens
のGenerate new token
を選びます。
3. Personal Access Tokensの権限を選択
Repository Access
をAll repositories
に設定します。
その後、Permission > Repository permissions
から下記の権限を選択します。
名前 | レベル | 概要 |
---|---|---|
Contents | Read and write | git clone, git pull, git push に必要 |
Metadata | Read-only | リポジトリメタデータの取得に必要(git ls-remote など) |
Pull requests | Read and write | プルリクの作成・操作に必要 |
Workflows permissions | Read and write |
git push でGitHub Actionsをトリガーする場合必要 |
3. 発行したトークンをSourceTreeに設定
SourceTreeでpush
を行った際に、認証を求められるので、先ほど、発行したトークンで認証を行ってください。
FAQ
git pull
時に403エラーがでる。
権限設定がたりていません。
3. Personal Access Tokensの権限を選択を見直してください。
git pull
時に400エラーがでる。
Personal access tokens (classic)
を使っていた場合、400エラーがでる場合があります。
トークン発行時にTokens (classic)
ではなく、Fine-grained Toknes
を選択してください。
感想
エンジニア歴五年目でこんなところに躓くとは思わなかった、、、