Windows 10のTortoiseGitにて、ログイン失敗問題各種と解決方法

Windows 10でTortoiseGitを使っていると、cloneやpushが出来ない問題が起きることが、ちょいちょいある。

TortoiseGitはGUI使いには便利なツールだというのに、windowsのせいで使えなくなるとはどういうことなのか…と悔しい気持ちでおります。
自分と関係性はないのだけど…。

なので、自分に起こり、自分が対応出来た問題だけ、ここに記載する。

問題1:ログイン情報入力ウィンドウで間違えた

『Clone with HTTPS』で接続をした際、ログイン情報を間違って入力、認証失敗してしまった。
もうBOXも出てこない…

関連問題

  • Githubではusernameを変更することが可能だが、変更した場合、同様のことが起きる。
  • 複数アカウントを持っていて、切り替えたい。

原因

一度ウィンドウでログイン情報入力した物は、その後入力せずに良いというwindowsの便利機能『資格情報マネージャー』が原因。

TortoiseGitの『設定(S)』→『Git』→『資格情報』にある『ヘルパー』の『manager』が、『資格情報マネージャー』に当たり、使うように設定されていることが確認できる。
高度な設定だから気にもしてなかった。

解決方法:windows機能でログイン情報を設定

Cortanaタスクバー『検索ボックス』で『資格情報マネージャー』と入力し起動。
『Windows 資格情報』→『汎用資格情報』に
『git:https://【gitサーバ】』
『git:https://【ユーザID】@【gitサーバ】』
があるので消す。

するとcloneし直せば、『ネットワーク資格情報の入力』が出てくるので、新しい内容を入力すればOK。

調べるには時間かけたのに、対応は数分の単純作業というね…

問題2:アカウントを切り替えたい

『Windows 資格情報』から情報を消さずして、別のアカウントからGit操作したい。

関連問題

  • 『Windows 資格情報』を消すも、『ネットワーク資格情報の入力』が出ない。
  • GitHubのprivateに新規clone時『remote: Repository not found』。※sshでもNG

解決方法:cloneするGitアドレスを、ユーザを指定に変更

もういっそcloneするGitアドレスを、使うユーザを指定したものに変更する

元のClone with HTTPS
『https://github.com/.gitの持ち主のユーザID/GIT名.git』
 ↓
書き換え後
『https://ユーザID:パスワード@github.com/.gitの持ち主のユーザID/GIT名.git』
『https://ユーザID@github.com/.gitの持ち主のユーザID/GIT名.git』
に書き換え、cloneする。
※後者の場合、初回はパスワード求められる。

メリットは、いちいちユーザを切り替えるために情報を消したりしなくていいこと。
デメリットは、Github.comに表示されたURLそのままでは使えないということ。
後日書き換えたことを忘れたりね…

問題3:『Windows 資格情報』を消すも、『TortoiseGit』設定にもないアカウントで動く

現在使っているGithubアカウントは『ユーザA』。
そのアカウントで作ったプロジェクト『XXX』(https://github.com/【ユーザAのID】/XXX)
これをpushしようとするも、以前仕事で作り使った2重認証アカウント『ユーザB』を呼び出し、権限が無い旨のメッセージを出し、失敗した。

remote: Permission to 【ユーザAのID】/XXX.git denied to 【ユーザBのID】.
fatal: unable to access 'https://github.com/【ユーザIDのA】/XXX.git/'
: The requested URL returned error: 403

そこで『Windows 資格情報』から情報を、消したが『ネットワーク資格情報の入力』が出てこない…。
消して、新しい内容に書き換えるも完全無視。

しかし『TortoiseGit』にも設定が全く見当たらず、関係ないものも次々情報を消すも、状態が一切変わらない。
『フォルダ内を右クリック』→『TortoiseGit』→『設定』→『Git』→『資格情報』で、設定したり消したり延々。

試しに『Git Extensions』からcloneしてみても、同様の現象が起きる。
つまり原因は『TortoiseGit』ではない。

ならばOpenSSHかと思うもしかし
『C:\Users\【ユーザ名】\.ssh\』に『id_rsa』等が一切無い!

『C:\Users\【ユーザ名】\.gitconfig』を見ても設定した内容。

git config --list
git config --local --list
git config --global --list
git config --system --list

でも自分が設定したファイルの情報そのままである。

因みに『フォルダ内を右クリック』→『TortoiseGit』→『設定』→『Git』に該当する。

  • local(ローカルリポジトリの設定) : リポジトリ直下の .git\config
  • global(このユーザの設定) : C:\Users\【ユーザ名】\.gitconfig
  • system(全ユーザの共通設定) : C:\Program Files\Git\mingw64\etc\gitconfig

関連問題

  • 1の対応しても設定した内容に切り替わらない。そもそも『ネットワーク資格情報の入力』が出ない。

原因

『_netrc』が原因だった…。

もう1日かけても手詰まりで、どうしようもなくなって、伴侶にヘルプで助けてもらった…

解決方法:netrcファイルを削除

GitBushでgrepで情報が出てきた!

grep -r 【ユーザBのID】 ./*

「嘘だろ!?」となったが現実である。

結果出てきたのが『C:\Users\【ユーザ名】\_netrc』
中身は

machine github.com
login 【ユーザBのID】
password 【ユーザBのPersonal access tokens】

平文である。
※windows以外では『.netrc』

恐る恐る名前を変更してみたところ、問題なく動き、『ネットワーク資格情報の入力』が出た。
全俺が泣いた瞬間である。

ところで自分はこれを作った記憶がない…記憶がないのだ…
どうやって作ったんだろうね…?
credential.helperで1回wincredにしたとかかなぁ…うーん…

Qiitaにまとめたもの『Windows 10でTortoiseGit使う際に、アカウント情報が消えない場合の対応 - Qiita』を投稿しておいた。@2019.9

コメント

タイトルとURLをコピーしました