VSCodeで、Gitアカウントを使い分ける

# はじめに
基本的にVSCodeで書くコードは業務用のものなので、使っているGitアカウントも同じく業務用のものになります。
ただ、たまに自分用に作るアプリケーションはプライベート用のGitアカウントに紐づけたい・・！

ということで、どうしたら良いか調べてなんとか出来たので備忘録を。

※Gitへの理解は正直浅いので、間違った文法、理解の箇所があればご指摘ください・・！

# 対応手順
## 前提
- Windows11
- VSCodeは導入済み
- VSCodeから業務用のGitアカウントを通してリモートリポジトリにpush等ができる状態

## ローカルリポジトリのコミッターを変更する
### 1. 自分用アプリケーション等、プライベート用Gitアカウントに紐づけたいプロジェクトを開く
これはタイトルの通りです。
VSCodeで紐づけをしたいプロジェクトを開いてください。

### 2. プロジェクト内専用のGit設定を修正する
基本的にGitの設定周りは`git config`に記載されているのですが、これをそのまま書き換えてしまうと、業務用のアカウントでコミットしたいときにもプライベート用アカウントでコミットしてしまうことになります。

そこで、`--local`オプションを付けてアカウント設定を行うことで、今開いているプロジェクト内でのみプライベート用アカウントを使うようにします。
```terminal
C:\XXX\ProjectFolder> git config --local user.name XXXXX
C:\XXX\ProjectFolder> git config --local user.email XXXXX@XXXXX.XXX
```

不安な方は念の為、ローカル設定のみ修正されているか確認してみてください。
```terminal
C:\XXX\PrivateProjectFolder> git config --local -l #ローカルでの設定を確認
~~~~
#先ほど設定した内容になっている
user.name=XXXXX
user.email=XXXXX@XXXXX.XXX
~~~~

C:\XXX\PrivateProjectFolder> git config -l #全体での設定を確認
~~~~
#業務用アカウントの設定のままになっている
user.name=YYYYY
user.email=YYYYY@YYYYY.YYY
~~~~
```
となっていれば問題ありません。

### 3. 試しに何かしらcommitしてみる
これはやらなくてもよいです。
本当に動くのか確認するため、適当にコメントでも書き足してみてcommitしてください。
コミッターの名前、メールアドレスがプライベート用に登録したものとなっていれば大丈夫です。

```terminal
C:\XXX\PrivateProjectFolder> git log -n 1
commit xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Author: XXXXX<XXXXX@XXXXX.XXX> #←ここが2で設定したものになっているはず
~~~~
```

## リモートリポジトリにアクセスするときのアカウントを設定する
ややこしいのが、これだけだとリモートリポジトリにアクセスするときのアカウントは変わっていないという点です。
ざっくりとした理解ですが、おそらくこんな感じ。

- コードをローカルリポジトリにcommitするとき
    - git configを参照してアカウント周りの設定を判断する
- ローカルリポジトリからリモートリポジトリにpushするとき
    - **Window標準の資格情報に登録されているアカウント**を用いてpushする

なので、この**Windows標準の資格情報**というものを新たに追加する必要があります。

<details><summary>詳しく</summary>

`コントロールパネル > ユーザーアカウント > 資格情報マネージャー > Windows 資格情報`
に様々なアプリケーションにて使われている資格情報が登録されています。

このうち、`git:https://github.com`というものがデフォルトでリモートリポジトリへpushするときに使われる資格情報となります。
これを書き換えてしまうと、今度は業務用アカウントでリモートリポジトリにpushできなくなるため、別途資格情報を追加する必要があるのです。
</details>

### 1. 自分用アプリケーション等、プライベート用Gitアカウントに紐づけたいプロジェクトを開く
先程同様、VSCodeで紐づけをしたいプロジェクトを開いてください。

### 2. プロジェクト内専用のGit設定を修正する
上で書いた`Windows標準の資格情報`のひも付き先を変えます。
```terminal
C:\XXX\PrivateProjectFolder> git config --local credential.namespace xxxxx 
#xxxxxの部分は、"git"以外なら何でも良いです。ここに入力した名前で資格情報が登録されます。
```

### 3. GitHubにて、プライベート用アカウントに新規リポジトリを用意しておく
このあたりは人によって必要な手順が異なってくると思います。
不要であれば飛ばして大丈夫です。

今回僕のケースの場合、ローカルでちまちま積み立てるのみでリモートリポジトリは作成すらされていなかったので、GitHubを通して作成しました。

### 4. リモートを登録する
リモートを追加しましょう。
```terminal
C:\XXX\PrivateProjectFolder> git remote add origin https://github.com/username/yourRepository.git
```

### 5. 4で登録したリモートへpushする
このときにGitHubのログイン画面が表示されれば成功です。
新たに用意した資格情報がきちんと登録されているか、確認してみましょう。

`コントロールパネル > ユーザーアカウント > 資格情報マネージャー > Windows 資格情報`
に諸々の資格情報が表示されています。
その中に`xxxxx:https://github.com`（xxxxxは2で登録した名前）が登録されていれば問題ありません。

お疲れ様でした！

# 注意点
**[ローカルリポジトリのコミッターを変更する](https://qiita.com/kft12/items/261c1be9df5450c2e538#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%81%AE%E3%82%B3%E3%83%9F%E3%83%83%E3%82%BF%E3%83%BC%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B)** にてコミッターの変更を行いますが、これは「**以降のコミットをするユーザーを変更している**」作業になります。
そのため、**設定変更以前にコミットされた部分は業務用ユーザーでのコミット**となってしまいます。

僕は面倒くさかったのでそのままにしていますが、気になる方は「git コミッター 変更」とかで調べてみてください。

# おわりに
Git周りは理解が浅いこともあり、全然わからん！！
正直めちゃ時間がかかりました。
疲れた・・。