windowsのgitコマンドのgithubマルチアカウント運用
環境
Windows10
git version 2.28.0.windows.1
wsl ubuntu git version 2.25.1
対象読者ではない人たちへ
git credential helperってなに?って人はこの記事を読む前に、こちらを読もう
この話とgit config user
,git config email
は全く違う話で、これを混同してしまう人はこの記事を読む前に公式ドキュメントなどを読もう。
本題
windowsでgitを普通にinstallしたらおそらく標準で Git-Credential-Manager-for-Windowsがcredential.helperに設定されている
git config --system credential.helper
がmanagerになってたら多分そう。
※wslでUbuntuを入れている人でそのへんを統合したい人は、Ubuntuの中のgitには、git config --system credential.helper '/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe'
としてしておこう。
これは、windowsのkeychain的な存在である"資格情報マネージャー"アプリ(スタートの検索のところに打てば出てくる)の、Windows資格情報と連動している。
git:https://github.com
と書かれている認証情報が、それだ。
で、このGit-Credential-Manager-for-Windowsにはnamespaceという機能があるらしい。
これは、git configで設定可能な項目で、標準では git
で、前述のgit:https://github.com
のprefixにあたる。
だから、別のアカウントで運用したいフォルダで git config --local credential.namespace name xxx
(xxxはgit以外の好きな文字列)とすれば、資格情報マネージャー上では、xxx:https://github.com
と書かれている認証情報となり、複数管理が可能となるのである。
2021年にもなってやっとハックではないgithubマルチアカウント運用方法を見つけたのである。
手順
メインで使っているいつものgithubアカウントとは別のsubアカウントで登録済のprivate-repositoryをcloneする手順をまとめる
一応はwindowsでの話なので、PowerShellか、wsl上のlinuxかあたりでオペレーションすることを想定している
$ mkdir {repo} # cloneするのではなく先に空のディレクトリを作る
$ cd {repo}
repo/ $ git init
repo/ $ git config --local credential.namespace name xxx # xxxは"git"以外の好きな文字列だが、githubアカウント名などが妥当だろう
repo/ $ git remote add origin {repo_https_url}
repo/ $ git pull # ここでGUIかCUIでusername/passwordを尋ねられる (2faを有効にした人はpasswordのかわrにpersonal_access_tokenを入力すること)
これだ。
あとはWindowsの資格情報マネージャー
を起動し、Windows資格情報にxxx:https://github.com
が追加されていることを確認しよう。
認証情報を消したくなったら、資格情報マネージャー
を起動し、Windows資格情報にxxx:https://github.com
を削除しよう。次回のgit-pull時に再びusername/passwordが尋ねられるはずだ。
vscode上において
vscodeで、Git-Credential-Manager-for-Windowsを使ったら、vscodeのgithub拡張機能が、vscodeのログインを求めてくる。平時、シングルアカウント運用をしている時は両方同じアカウントなので気にしないがこういうときはややこしい。
別にvscodeに認証情報を登録しなければgitコマンドが使えないわけでも、登録すれば使えるようになるわけでもない。これはvscodeがマルチデバイスで設定値動機をするとかLiveShareするときに使うってだけで、git credentialの動作には影響しない。
vscodeのにわたす認証情報と、Git-Credential-Manager-for-Windowsの(少なくとも)namespaceで管理する認証情報は、全く別物と割り切ろう。(たとえ設定値が同じでも)
- default account: いつも使うアカウント。vscodeにわたす。namespaceを指定しないで使う。
- sub account1: サブアカウント1。vscodeには渡さない。namespace "sub1"を指定して使う。
- sub account2
というような運用が良いだろう。
subの方をvscodeにわたす人も居ると思うのでそれもいいだろう。
ただしvscodeはシングルアカウント前提の設計らしい(出典)ので注意。
Author And Source
この問題について(windowsのgitコマンドのgithubマルチアカウント運用), 我々は、より多くの情報をここで見つけました https://qiita.com/hikaruna/items/60f2749e2abd3885ac46著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .