TortoiseGitでアカウントを記憶させる仕組み(Windows)
GitHub/GitLab、その他も同じなのだが、アカウント情報の必要なリポジトリにアクセスする際には、TortoiseGitが何度もユーザ名とパスワードを聞いてくる。例えば、GitHubやGitLabだ。
これは非常に面倒なので、TortoiseGitにアカウント情報(クレデンシャル)を覚え込ませてしまうことにする。
が、仕組みとしては少々ややこしい。簡単に行う方法をまず見て、詳細な説明をしていく。
アカウントを覚えさせる
デスクトップを右クリックするなどして、TortoiseGit>設定を選択する。
既にヘルパーに何らかが格納されているかもしれないが「削除」しても、しなくてもよい。
例えば、gitlabの場合は以下のように入力する。URLは「https://gitlab.com」だ。ユーザ名のところは自分のメアドを入れる。
最後の「新規に追加/保存」をクリックする。と、以下のように左側の「ヘルパー」部分に登録される。
この状態でOKする。
※1:設定タイプとしては「グローバル」の他に「システム」があるが、前者はログイン中のユーザのみ用の設定、後者はマシン全体の設定になる。個人所有のマシンの場合は、どちらだろうが同じ。だが、後述するように登録される場所は異なってくる。
※2:ヘルパーとしては、managerの他にwincredもあるが、これは現在推奨されていないそうだ。
リポジトリをクローンする
ここではgitlabを例にとっている。gitlab上のリポジトリをクローンする。デスクトップを右クリックして、「クローン」を選択する。
gitlab上のリポジトリのURLと、クローン先の新規ディレクトリを指定する。
この後、以下のようなダイアログが表示されるので、gitlabのパスワードを入力する。
以上で終了である。指定したフォルダが作成され、そこで作業が可能になる。
詳細な解説
非常にややこしいのだが、TortoiseGitは、Gitの機能を利用してアカウント情報(クレデンシャル)の保存を行なっており、さらにWindows上で「manager」を選択した場合には、GitはGit Credential Manager for Windows(GCM)といういわばプラグインを通じてWindows組み込みの資格情報マネージャーにパスワードを保存している。
つまり、
TortoiseGit –> Git –> GCM –> Windows資格情報マネージャー
という経路になっている。
URLとユーザ名の保存場所
先にTortoiseGitに登録したURL(上の例ではhttps://gitlab.com)とユーザ名(メールアドレス)は、実はgit管理の設定ファイルに保存されており、さらにグローバルかシステムかによって保存ファイルが異なる。
※TortoiseGitはこれを直接的には間接的にか読み出して「設定>資格情報」に表示している。ちなみに、TortoiseGitのバグなのか、あるいはGit側の問題なのか、「設定>資格情報」でいくら削除を行なっても一向に削除されない場合がある。つまり、OKでクローズした後に、もう一度「設定>資格情報」を表示させると削除されていない。
グローバルの場合には「c:\users\ユーザ名\.gitconfig」に保存され、システムの場合には「C:\Program Files\Git\mingw64\etc\gitconfig」に保存される。これらは単純なテキストファイルである。
必要な場合には直接編集しても良いのだが、gitの正規の方法で編集するには、コマンドプロンプトで以下のコマンドを投入する。
git config --edit --global
あるいは
git config --edit --system
デフォルトのエディタはviになっているので、使い方がわからない人は、すぐ終了した方が良い。終了するには、:(コロン)、q、Enterを押す。
これを見てみると、以下のようになっている。
https://gitlab.comについては、manager(つまりGCM)を介してWindowsの資格情報マネージャーを用いるということを意味している。
Windowsの資格情報マネージャー
パスワードがWindowsの資格情報マネージャーに登録されたことは、「コントロールパネル>資格情報マネージャー」を見てみればわかる。
以下のような表示になる。
資格情報の編集や削除も可能だ。右上のボタンで展開して編集あるいは削除を選択する。
編集の場合は以下の画面になる。