複数のGitアカウントを自動で切り替える

<!--
複数のGitアカウントを自動で切り替える
git github アカウント 切り替え
-->

# はじめに
　設定する方法だけ知りたい方は [こちら](#本筋の設定)
　また、実行の際は、自己責任でお願いします。
　なお、Gitの複数アカウントについては、以下をどうぞ。
- [GitHubで会社用とプライベートアカウントを分けよう(問題ないよ) - Medium](https://medium.com/@ask_yoshi_taka/github%E3%81%A7%E4%BC%9A%E7%A4%BE%E7%94%A8%E3%81%A8%E3%83%97%E3%83%A9%E3%82%A4%E3%83%99%E3%83%BC%E3%83%88%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%82%92%E5%88%86%E3%81%91%E3%82%88%E3%81%86-%E5%95%8F%E9%A1%8C%E3%81%AA%E3%81%84%E3%82%88-b00557c3bd78)
- [GitHubに複数アカウントを作ってもいいのか - Qiita](https://qiita.com/hnw/items/0ad26274a8b90fffffaa)
## 背景
- 個人用と、会社用のGitアカウントを所有してる
- 都度切り替えが面倒である
- アカウントを間違えるリスクある
- 先日、新環境にした
## 注意点
　初記事です。記事の書き方や、記事の内容など不適切なものがあればご指摘お願いします。
　また、改善点なども投げていただけると嬉しいです。

---

# 言葉の定義
## Gitアカウント
- Gitのアカウント または Githubのアカウント のこと。
- Gitのアカウント と Githubのアカウント との違いがわからなかったので。

---

# 実行環境
- Windows 11
- PowerShell 7.2.6
- git version 2.37.3.windows.1

---

# 設定方法の調査
以下5つが見つかった。
1. レポジトリ毎に設定する
2. clone時に設定する
3. 毎回切り替える
4. 自動で読み込ませる
5. なんだかよくわからん方法で切り替える

# 今回試す方法について
私「前に調べた Conditional includes ってやつ使えば簡単に実装できるやろ」
ということで、 4.自動で読み込ませる を試します。

# 実現したいこと
- 基本は、個人のアカウントでgitを利用
- 特定のディレクトリ 以下の時、会社用に切り替える

---

# 本筋の設定
# 設定1.設定ファイルの新規作成
　ディレクトリや、ファイル名、拡張子などの指定は特にありません。
　(一番楽なのは、ユーザーディレクトリ直下かもしれないです。)
　適宜内容を変えながら、以下を書き込んでください。
~~~json: hoge
[user]
	email = 会社用メールアドレス
	name = 会社用ユーザー名
~~~
## 設定1.参考例
　C:/hoge 以下に GitChanger を作成、内容は以下。
~~~json: C:/hoge/GitChanger
[user]
	email = HogeHuman@Black.com
	name = EmployeeNo3
~~~
# 設定2.設定ファイルを読み込ませる設定
　GUIで設定しても問題ないです。
1. ユーザディレクトリ直下に移動
2. .gitconfig を変更 もしくは、 新規作成
3. 書き込みの注意点
   - includeIfのパスの語尾に、 /** をつける点
   - 区切りは、\ ではなく / である点
   - 既に、[user] などがあるときは、今回追記する必要はない点
4. 書き込みの注意点に気をつけ、適宜内容を変えながら、以下を書き込む。
　なお、このファイルがあるパスからの相対パスで、指定することも可能です。
~~~json: %HOMEPATH%.gitconfig
[user]
	email = 個人用メールアドレス
	name = 個人用ユーザー名

[includeIf "gitdir:特定のディレクトリのパス/**"]
	path = 先程の設定ファイルのパス
~~~
## 設定2.参考例
　C:/DeskWork/ 以下を、会社用のディレクトリにする場合。
　なお、ユーザー直下に設定ファイルを作成した場合は、path = ファイル名 で良い筈です(未検証)。
~~~json: C:/Users/Hogex/.gitconfig
[user]
	email = Hogex@gugure.com
	name = Hogex

[includeIf "gitdir:C:/DeskWork/**"]
	path = C:/hoge/GitChanger
~~~
　以上で、設定作業は終了です。お疲れ様でした。

---

# 本当にできているか確認
　会社用のディレクトリ と それ以外のディレクトリ で、ユーザー名かメールアドレスを表示すれば確認できます。
## ユーザー名を表示
~~~
git config user.name
~~~
## メールアドレスを表示
~~~
git config user.email
~~~
## ユーザー名での成功確認例
以下を実行で、
~~~
cd C:\
git config user.name
~~~
個人用のユーザー名 Hogex が出力。
## メールアドレスでの成功確認例
以下を実行で、
~~~
cd C:\DeskWork\
git config user.name
~~~
会社用のユーザー名 EmployeeNo3 が出力。

---

# 感想
　こういう作業の大抵は、既存の記事を参考に行っていたので、1から自力でやるのは楽しかったです。
　初記事ということで勝手がわからなかったですが、取り敢えず公開できて良かったです。

---

# 参考文献
　主に、方法の調査時に拝見しました。
この場を借りて感謝の意を表します。ありがとうございました。
- [複数 git アカウントを1台のPCで使い分ける方法 - Qiita](https://qiita.com/naohikowatanabe/items/fb913ea6617848cd9c17)
- [githubアカウント切り替えを簡単にする方法 - Zenn](https://zenn.dev/manhattan_code/articles/0317_engineer_community)
- [複数のgitアカウントを使い分ける - Qiita](https://qiita.com/0084ken/items/f4a8b0fbff135a987fea)
- [gitのアカウントを切り替えるshellコマンドを作成してみた](https://qiita.com/shungo_m/items/7d8e67391eea89afc896)
- [Git - git-config Documentation #Conditional includes](https://git-scm.com/docs/git-config#_conditional_includes)
　→ Gitの公式ドキュメントうち、git-config の章、Conditional includes の項。