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
コメント