機械の中の学習日誌

社畜によるIT技術メモです。今日も元気です。

[CodeCommit][Windows] Gitのアカウント切り替え

CodeCommitで複数のアカウントを使う場合に、Windows上で切り替えて使用する方法。

新しいアカウントでのcloneエラー

CodeCommitを使っていて、CodeCommitの別のアカウントのリポジトリをcloneしようとしたら、以下のようなエラーがでた。

fatal: repository 'https://xxxxx' not found

リポジトリあるやん・・・と思うのだけれども、これは、元々使っていたCodeCommitの認証情報を使用してアクセスしようとしているためエラーとなっているようだ。

以下のようにgitコマンドの前に「GIT_CURL_VERBOSE=1」を付けて再度実行すると、詳細なログが確認できる。 このログの中身を追っていくと、元々使っていたCodeCommitのユーザ名を使ってアクセスしに行っていることが分かる。

GIT_CURL_VERBOSE=1 git clone 'https://xxxxx'

Windows10の場合、CodeCommitの認証情報は、「Windows 資格情報」に保存されていて、gitコマンド実行時にこの情報を使用してアクセスする。

*「Windows 資格情報」は、Windowsの検索Boxで「資格情報」と検索して表示される「資格情報マネージャー」から確認できる。

blog.janjan.net

とりあえずの解消策

「資格情報マネージャー」から、以前のCodeCommitのユーザ情報を削除する。

再度、cloneコマンドを実行すると、ユーザ名とパスワード入力画面が表示されるので、新しいアカウントの情報を入力する。 (ここで入力したアカウント情報が、再度、資格情報マネージャに登録される)

これで、新しいかアカウントのリポジトリがcloneできるようになる。

複数アカウントの切り替え

ただ、異なるアカウントでcloneするたびに、毎回、上記手順を踏むのは面倒。

なので、clone時に、アカウントごとにcredential.namespaceを設定してやる。 そうすることで、「資格情報マネージャー」に複数のアカウント情報を持たせることが出来る。

git -c credential.namespace=account1 clone https://xxxxx

*account1の部分は任意

cloneしたリポジトリ内で、pushやpullの度に、credential.namespace指定をしてやるのは面倒なので、以下のコマンドでcredentialの設定を行う。(リポジトリ直下の.git/configファイルに反映される)

これを実行することで、gitコマンド時のcredential.namespace指定は不要となる。 (指定したcredential.namespaceが認証情報として自動で使われるようになる。)

 git config --local credential.namespace account1

※参考 w.atwiki.jp