milk_spoonのブログ

さじの情報科学的活動、考えたこと、その他を雑記するためのブログです。

別PCからgit pushできない

結局

↓のようにremote originのurlにユーザー名とパスワードを入れた。

git remote set-url https://Hoge:Password@github.com/Hoge/repo.git

ら、push成功。
そのままは嫌だったので

git remote set-url origin https://Hoge@github.com/Hoge/repo.git

でパスワード部分は削除
でもこれでもpushうまくいったので、一回認証通すのが必要だった?
できたにはできたけどあまりスッキリ解決せず。

検索したら他の人が5億回くらい同じ問題に当たってたけど、「パスワードもurlに入れました^^」で終わってるところが多かったので
一応あとから削除してもOKよってのを書いときます。

追記

多分Windows資格情報マネージャーに別のアカウントの情報が残ってたせいかも?
コンパネから開いて、gitHub.comに対する資格情報を削除してあげれば、次回git pushであらためてユーザーIDとパスワードを聞かれる…はず。
詳しくは↓で。

詳細

メイン機で作成して色々やってgitHubにpushしたリポジトリを、サブ機でcloneしてから編集してcommitしてpushしようとした。

$ git push
remote: Permission to Hoge/repo.git denied to Fuga.
fatal: unable to access 'https://github.com/Hoge/repo.git/': The requested URL returned error: 403

実はHogeとFuga2つのgitHubアカウントを持ってる。
でもgit configの--globalも--localもついでに--systemも見たけどFugaの情報はない。
これでもかと--globalと--localでuser.nameをHogeに、user.emailをHogeのnoreplyメールアドレスに設定
あとremote originのurlにユーザー名も入れてhttps://Hoge@github.com/Hoge/repo.git
に。
それでもエラーメッセージ変わらず…
ユーザー名入れたんだから改めてパスワード聞いてくれればいいのに!
SSH使うなり、(同じ問題の回答としてよく出てくる)パスワードもremote originのurlに入れてしまえばいいのかもしれないけど
Fugaの情報をどこから持ってきてるのか謎…

でも結局冒頭のようにパスワードをurlに入れて解決。
パスワード入れておくのはイヤなのであとから削除。
削除したあともpushできたので一回認証通ればOKっぽい。

追記

ごめんこれ多分Windowsの資格情報マネージャーのせいでは。
f:id:milk_spoon:20191128063012p:plain

gitがcredential.helperとしてリモートリポジトリの認証情報を記憶管理するオプションが色々あるけど
Windowsの場合wincredという設定があって、これが資格情報マネージャーを使うらしい。
いや当然といえば当然感…
Git - 認証情報の保存

多分上の資格情報マネージャーの画面で、github.comに対する情報を消してあげれば
gitでpushする最初のときにユーザー名とパスワードを聞かれるはず。
で、以降は記憶されるのでパスワード入力しなくて済む。
でも結果として同じように解決するなら、やっぱり↑のように一回ユーザーIDとパスワード入れてpushしてからURL変えるほうがラクかも。

サブ機も前に色々開発で使ってたので、多分Fugaアカウントの情報が残っててそっちを見に行ってたっぽい。
なんでgitがFugaの情報を吐くのか(知ってるのか)怖かったけど出どころがわかって安心。