1. 問題の発生
GitHubでリポジトリにコードをプッシュしようとすると、403 Forbidden
エラーが表示される場合があります。エラーメッセージは次のようなものです。
remote: Permission to <ユーザー名>/<リポジトリ名>.git denied to <別のユーザー名>.
fatal: unable to access 'https://github.com/<ユーザー名>/<リポジトリ名>.git/': The requested URL returned error: 403
これは、リポジトリに対するプッシュ権限がない場合に発生します。以下の手順で解決できます。
2. Personal Access Token(PAT)の生成
GitHubでのパスワード認証は廃止されており、Personal Access Token(PAT)を使用して認証します。以下はPATを生成する手順です。
- GitHubにログインし、右上のプロフィールアイコンをクリック。
- 「Settings」→「Developer settings」を選択。
- 「Personal access tokens」→「Generate new token」をクリック。
- 必要なスコープ(例:
repo
)を選択し、トークンを生成します。 - トークンを生成したらコピーし、安全な場所に保存します。トークンは一度しか表示されませんので注意が必要です。
3. リモートURLの更新
次に、生成したトークンを使ってリモートURLを更新します。以下のコマンドを実行して、リモートリポジトリのURLを設定してください。
git remote set-url origin https://<GitHubユーザー名>:<PAT>@github.com/<GitHubユーザー名>/<リポジトリ名>.git
例として、GitHubユーザー名が RRR
で、PATが 555
の場合は次のように実行します。
git remote set-url origin https://RRR:555/RRR/rrr.git
4. リモートにプッシュ
リモートURLを更新したら、リモートリポジトリにプッシュします。
git push origin main
5. ブランチを使って main
を汚さない方法
main
ブランチを直接汚したくない場合は、新しいブランチを作成して作業することを推奨します。git switch
コマンドを使ってブランチを切り替えましょう。
5.1 新しいブランチの作成
次のコマンドで新しいブランチを作成し、そのブランチに切り替えます。
git switch -c <新しいブランチ名>
例:
git switch -c feature-update
-c
は create(作成) の意味で、指定したブランチが存在しない場合に新しいブランチを作成して切り替えるオプションです。
6. 変更内容をコミット
新しいブランチで作業した後、次のコマンドで変更内容をコミットします。
git add .
git commit -m "Add new feature"
7. リモートにブランチをプッシュ
新しく作成したブランチをリモートリポジトリにプッシュします。
git push origin <新しいブランチ名>
例:
git push origin feature-update
8. main
へのマージ
作業が完了し、コードのレビューやテストが問題なければ、main
ブランチにマージすることができます。
8.1 main
ブランチに戻る
まず main
ブランチに戻ります。
git switch main
8.2 マージを実行
次に、作業したブランチを main
にマージします。
git merge <新しいブランチ名>
例:
git merge feature-update
8.3 最終プッシュ
最後に、main
ブランチをリモートリポジトリにプッシュします。
git push origin main
まとめ
GitHubへのプッシュ権限がない場合は、以下の手順で解決できます。
Personal Access Token(PAT)を生成し、リモートリポジトリのURLを更新。
リモートリポジトリにプッシュするために適切な権限を設定。
main ブランチを直接変更したくない場合、新しいブランチを作成して作業し、そのブランチでコミットとプッシュを行う。
作業が完了したら、main ブランチにマージして最終的にリモートにプッシュ。
これにより、main ブランチを保護しながら、GitHubでの作業がスムーズに進められます。PATの使用とブランチ管理によって、権限問題を解決し、安全にコードを管理することができます。