どうも、バイト戦士です。
今回はVSコードでGitGraph等を介してプッシュしようと思った際、「権限がなくてプッシュできません」みたいな通知が出た際の対処法です。
症状:コミットはできるがプッシュできない
エラーが出ていた時のウィンドウを消してしまったので申し訳ない。文面で行きます。
症状としては以下のような感じで、コミットした後に「変更の同期」でプッシュしようとするとできないといった状態に陥りました。
エラーメッセージ全体としては、
"You do not have permission to push to on Github. Would you like to create a fork and push to it instead"
→「Githubにプッシュするための権限がありません。代わりにフォークを作成し、それにプッシュしますか?」
となってます。
Gitgraphの導入と初期設定(.name .emal等)はすでに済ませてあるのですが、どうしてもコミットだけできない。そんな感じです。
原因
ネットで検索したところ、こういう症状が出る人はそんなに多くはない印象でした。
心当たる原因として、
・過去に他のGithubアカウントを使って何らかの作業を行った
・SourceTreeなどの他のサービスで、他のGithubアカウントを使用した
といった点があげられました。
どうやらGithub系のサービスでは、一度ログインするとPC内にその情報が自動で保存されるようです。
よって他のGithubアカウントなどに変更してリモートにアクセスする際などに、別アカウントの認証情報を使って今のアカウントにプッシュしようとする、みたいなことが起こるようです。
解決方法
解決方法は簡単です。
いったん認証情報を全部消して再度ログイン・登録します。
VSCodeからログアウトする
まずはVSCodeからログアウトします。
ログアウトはVSCodeの左下から選択できます。
サインアウトすると以下のようになります。
PCに登録された認証情報を削除する
次にPC内に残っている認証情報を削除します。
まずはWindows左下の検索窓から「コントロールパネル」を開きます。
次に、「ユーザーアカウント」をクリックし、「資格情報マネージャー」を開きます。
開いたら「Windows資格情報」をクリックし、PCに登録されている資格情報一覧を表示します。
ここで、「git」や「Git」のような、Githubっぽい単語が付いた認証情報を全部消します。
これでVSCodeやリモートと紐づけてある前のアカウント情報は消えます。
※Git系でほかのサービスを使っている人注意して消してください。
再度VSCodeにログインする
次にVSCodeに再度ログインします。まずは左下のアイコンから「Sign in to Sync Settings(1)」をクリックします。
そしたらブラウザで「VSCode開きますか?」的なメッセージが出るので、「VSCodeで開く」をクリックします。
すると以下のようなウィンドウが出るので、「Open」をクリックします。
これで以下のように再度ログインされたはずです。
Githubへのログインを再度行う
次にGithubへのログインを再度行っていきます。
最初の状態と同じなら(プロジェクトを開いているなら)以下のように「変更の同期」ボタンが表示されているかと思いますので、クリックします。
次に以下のようなウィンドウが出るので「OK」を押します。
すると以下のようなウィンドウが出るはずです。
ここで今プッシュしたいリモートと同じGithubアカウントのログインを行います。
多分このウィンドウってアカウント変更したときに出ないんですよね。
それが原因で資格情報を変更できずにプッシュできん、、、見たいになってるんだと思います。(詳しくは知らん)
ブラウザ経由でログインを行う
先ほどのウィンドウで「Sign in with your browser」をクリックすると以下のページに飛びます。(ブラウザ)
ここで「Authorize git-ecosystem」をクリックします。
すると「完了しました!」的なメッセージが出るので、これでログインは完了です。
確認
先ほど「変更の同期」をクリックしましたが、再度ターミナルを確認してみます。
以下のように次のコミットを待っている状態になっていれば、問題なくプッシュできています。
最後にGithubにアクセスし、コミットが適用されていることが確認できれば操作は完了です。
まとめ
今回はVSCodeからプラグイン経由でプッシュする際にうまくいかなかった場合の対処をまとめました。
原因は事前に登録していた別のGithubアカウントの認証情報がPC(VSCode)に残っていたことで、
解決策はPCとVSCodeの情報をいったん削除して再度ログイン・登録することで、
結果として問題なくコミット・プッシュできた。
といった感じです。
たどり着くまでSSHキーの登録とかGithub Desktopとかいろいろやったんですが、結局どれもやらなくて大丈夫でした。
多少でも参考になれれば幸いです。
それでは。