TortoiseGitでアカウントを記憶させる仕組み(Windows)

2019年1月26日

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の資格情報マネージャーに登録されたことは、「コントロールパネル>資格情報マネージャー」を見てみればわかる。

以下のような表示になる。

資格情報の編集や削除も可能だ。右上のボタンで展開して編集あるいは削除を選択する。

編集の場合は以下の画面になる。