Git ID Switcher
May 8, 2026 · View on GitHub
⚠️ しまくとぅば翻訳について
この翻訳は実験的なものであり、誤りを含む可能性があります。 ネイティブスピーカーの方からの修正PRを心よりお待ちしています。
くぬ翻訳や実験的やいびーん、間違いぬあいびーくとぅあいびーん。 うちなーぐち分かいるちゅーぬ修正PR待っちょーいびーん。
📚 しまくとぅばについて学ぶ / Learn More About Ryukyuan Languages
琉球諸語(しまくとぅば)は、沖縄・奄美諸島で話されてきた言語群です。沖縄語、宮古語、八重山語、与那国語、奄美語などが含まれます。ユネスコにより危機言語に分類されていますが、復興の取り組みが進められています。
- UNESCO Atlas of World's Languages in Danger (PDF)
- 沖縄県 しまくとぅば普及推進計画
- しまくとぅばの日 - Wikipedia
- 琉球大学 人文社会学部
- 国立国語研究所 危機言語プロジェクト
|
|
ちゅーちゅクリックさーに複数ぬGitプロフィール切り替えーいびーん。複数ぬGitHubアカウント、SSH鍵、GPG署名管理さーに、Gitサブモジュールんかいも自動的にプロフィール適用さびーん。
|
🎯 ぬーんちくぬ Git ID Switcher?
Gitプロフィール切り替えツールやいっぺーあいびーしが、Git ID Switcher や他ぬツールぬ見落としがちな問題解決さびーん:
- サブモジュールぬ悩み: サブモジュール持っちょーるリポジトリ(例:Hugoテーマ、ベンダーライブラリ)んかい仕事すーる時、普通やうぬうぬサブモジュールんかい
git config user.name手動で設定せんといかんさー。くぬ拡張機能や、全部ぬアクティブなサブモジュールんかい再帰的にプロフィール適用さーに、くぬ問題エレガントに解決さびーん。 - SSH & GPG処理: 単に名前変えーるだけやあらん、ssh-agent内ぬSSH鍵入れ替えーてぃ、GPG署名設定さーに、間違った署名んかいコミットすーるくとぅ防じゃびーん。
機能
- プロフィール管理UI: settings.json編集せんでぃ、プロフィールぬ追加・編集・削除・並べ替えがUI可能
- ちゅーちゅクリックさーにプロフィール切り替え: Git user.nameとぅuser.emailふぃっちー変えーいびーん
- ステータスバー統合: 今ぬプロフィールいちなん分かいびーん
- Sync Check: プロフィールとぅgit configぬ不一致ばリアルタイムんかい検出さーに、ステータスバーんかい警告表示
- サブモジュール対応: Gitサブモジュールんかいも自動的にプロフィール伝播
- SSH鍵管理: ssh-agentぬSSH鍵自動的に切り替え
- GPG署名対応: コミット署名用ぬGPG鍵設定(オプション)
- リッチなツールチップ: 説明やSSHホスト含む詳細なプロフィール情報
- クロスプラットフォーム: macOS、Linux、Windowsんかい動ちゃびーん
- 多言語対応: 17言語サポート
🌏 多言語んかいぬ想い
わんねー少数派ぬ存在価値大切にしょーいびーん。 少数やしんち切り捨てーぶさーねーやいびらん。 完璧に翻訳でーきらんてぃん、少数言語ぬ存在理解さーに、敬意示す気持ちだきん感じてぃくぃみそーれー。
くぬ拡張機能や、VS Codeがサポートすーる17言語全部んかい対応しょーいびーん。さらに、READMEドキュメントについてぃや、少数民族ぬ言語やジョーク言語んかいぬ翻訳んかいもチャレンジしょーいびーん。
くれーただぬ「グローバル対応」やあらん、「言語的多様性んかいぬ敬意」やいびーん。そしてぃ、言語ば超えーてぃ、あらゆる場所んかいいーる開発者から世界がゆーなーるコミットがさりてぃいちゅん...そんなインフラになーたら嬉しいびーん。
クイックスタート
個人アカウントとぅ会社発行アカウント(Enterprise Managed User)使い分けーる典型的なセットアップやいびーん。
ステップ 1: SSH鍵準備
まず、アカウントぬうぬうぬんかいSSH鍵作てぃくぃみそーれー(あいねーとばしてぃんでぃーびる):
# 個人用
ssh-keygen -t ed25519 -C "makoto@personal.example.com" -f ~/.ssh/id_ed25519_personal
# 仕事用
ssh-keygen -t ed25519 -C "makoto.higa@techcorp.example.com" -f ~/.ssh/id_ed25519_work
うぬうぬぬSSH鍵ぬ公開鍵(.pubファイル)ばそれぞれぬGitHubアカウントんかい登録しくぃみそーれー。
メモ: GitHubんかい登録すーるんや
id_ed25519_personal.pub(公開鍵)やいびーん。id_ed25519_personal(拡張子なし)や秘密鍵やくとぅ、絶対ん他人とぅ共有したり、アップロードさんようにしくぃみそーれー。
ステップ 2: SSH config設定
~/.ssh/config 編集:
# 個人用GitHubアカウント(デフォルト)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
# 仕事用GitHubアカウント
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
ステップ 3: 拡張機能設定
インストール直後やサンプルプロフィール用意さりてぃいびーん。 以下ぬガイドんかい沿ってぃ、くれー自分用んかい編集しくぃみそーれー。
鍵ファイルや送信さらん: SSH鍵パスぬ設定んかい記録さーるんや鍵ファイルぬパス(場所)だけやいびーん。鍵ファイルぬ中身がアップロードさりたり外部んかい送信さりーるくとぅやあいびらん。
GPG署名使う場合: プロフィール編集画面んかい
gpgKeyIdも設定でぃちゅん。 GPG鍵IDぬ確認方法や「トラブルシューティング」見てぃくぃみそーれー。
ヒント: settings.jsonから直接設定すーるくとぅもでぃちゅん。 拡張機能ぬ設定開ちゅん(
Cmd+,/Ctrl+,)→「Git ID Switcher」検索 →「settings.jsonで編集」クリック。 JSON形式んかいぬ設定例や「フル設定例」見てぃくぃみそーれー。
フル設定例: 5アカウントとぅSSH + GPG
全部まとめた完全な例やいびーん:
SSH設定 (~/.ssh/config)
# 個人用アカウント(デフォルト)
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
# 仕事用アカウント(会社発行ぬEnterprise Managed User)
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
# クライアントA 受託開発(Bitbucket)
Host bitbucket-clienta
HostName bitbucket.org
User git
IdentityFile ~/.ssh/id_ed25519_clienta
IdentitiesOnly yes
# クライアントB 常駐プロジェクト(Bitbucket)
Host bitbucket-clientb
HostName bitbucket.org
User git
IdentityFile ~/.ssh/id_ed25519_clientb
IdentitiesOnly yes
# OSS活動(GitLab)
Host gitlab-oss
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519_oss
IdentitiesOnly yes
拡張機能設定
{
"gitIdSwitcher.identities": [
{
"id": "personal",
"name": "比嘉真",
"email": "makoto@personal.example.com",
"service": "GitHub",
"icon": "🐉",
"description": "わん ぬ プロジェクト",
"sshKeyPath": "~/.ssh/id_ed25519_personal",
"sshHost": "github-personal",
"gpgKeyId": "ABCD1234EF567890"
},
{
"id": "work-main",
"name": "比嘉真",
"email": "makoto.higa@techcorp.example.com",
"service": "GitHub しくち",
"icon": "🌊",
"description": "TechCorp めー ぬ しくち",
"sshKeyPath": "~/.ssh/id_ed25519_work",
"sshHost": "github-work",
"gpgKeyId": "9876543210FEDCBA"
},
{
"id": "client-a",
"name": "比嘉真",
"email": "makoto@clienta.example.com",
"service": "Bitbucket",
"icon": "☀️",
"description": "ClientA うきー",
"sshKeyPath": "~/.ssh/id_ed25519_clienta",
"sshHost": "bitbucket-clienta"
},
{
"id": "client-b",
"name": "M.比嘉",
"email": "m.higa@clientb.example.com",
"service": "Bitbucket",
"icon": "🏝️",
"description": "ClientB じょーちゅー",
"sshKeyPath": "~/.ssh/id_ed25519_clientb",
"sshHost": "bitbucket-clientb"
},
{
"id": "oss",
"name": "makoto-dev",
"email": "makoto.dev@example.com",
"service": "GitLab",
"icon": "🦁",
"description": "OSS てぃーだち",
"sshKeyPath": "~/.ssh/id_ed25519_oss",
"sshHost": "gitlab-oss"
}
],
"gitIdSwitcher.defaultIdentity": "personal",
"gitIdSwitcher.autoSwitchSshKey": true,
"gitIdSwitcher.applyToSubmodules": true
}
メモ: 4番目ぬプロフィール(client-b)や省略名、5番目(oss)やハンドルネーム使とーいびーん。同じ人やてぃんプロフィールごとぅ違う表示名設定出来やいびーん。
プロフィール管理
ステータスバークリック → 一覧下部ぬ「プロフィール管理」んかい管理画面開ちゅん。 プロフィールぬ追加・編集・削除・並べ替えや全部UIから直接操作でぃちゅん。
コマンドパレットからGit ID Switcher: Delete Identityんかいプロフィール削除すーるくとぅもでぃちゅん。
コマンド
| コマンド | 説明 |
|---|---|
Git ID Switcher: Select Identity | プロフィールピッカー開ちゅん |
Git ID Switcher: Delete Identity | プロフィール削除 |
Git ID Switcher: Show Current Identity | 今ぬプロフィール情報表示 |
Git ID Switcher: Show Documentation | ドキュメント表示 |
設定リファレンス
プロフィールぬプロパティ
| プロパティ | 必須 | 説明 |
|---|---|---|
id | ✅ | 一意ぬ識別子(例:"personal", "work") |
name | ✅ | Git user.name - コミットんかい表示 |
email | ✅ | Git user.email - コミットんかい表示 |
icon | ステータスバーんかい表示さーる絵文字(例:"🐉")。単一絵文字のみ | |
service | サービス名(例:"GitHub", "GitLab")。UI表示んかい使用 | |
description | ピッカーとぅツールチップんかい表示さーる短い説明 | |
sshKeyPath | SSHプライベートキーぬパス(例:"~/.ssh/id_ed25519_work") | |
sshHost | SSH configぬHostエイリアス(例:"github-work") | |
gpgKeyId | コミット署名用ぬGPG鍵ID |
表示んかい関すーる制限
- ステータスバー: 約25文字超えーる場合や
...んかい省略さーるん icon: 単一ぬ絵文字(書記素クラスター)のみ使用可能。複数ぬ絵文字や長い文字列や使用でーきらん
グローバル設定
| 設定 | デフォルト | 説明 |
|---|---|---|
gitIdSwitcher.identities | サンプル参照 | プロフィール設定ぬリスト |
gitIdSwitcher.defaultIdentity | サンプル参照 | 使用すーるデフォルトプロフィールぬID |
gitIdSwitcher.autoSwitchSshKey | true | プロフィール変更時んかいSSH鍵自動切り替え |
gitIdSwitcher.showNotifications | true | プロフィール切り替え時んかい通知表示 |
gitIdSwitcher.applyToSubmodules | true | Gitサブモジュールんかいプロフィール伝播 |
gitIdSwitcher.submoduleDepth | 1 | ネストさりたサブモジュール設定ぬ最大深度(1-5) |
gitIdSwitcher.includeIconInGitConfig | false | アイコン絵文字ばGit configぬuser.nameんかい含めーるか |
gitIdSwitcher.syncCheck.enabled | true | 選択したプロフィールが実際ぬgit configとぅ一致しちょーるか確認 |
gitIdSwitcher.syncCheck.onFocusReturn | true | エディタウィンドウがフォーカス戻った時んかいsync check実行 |
gitIdSwitcher.logging.fileEnabled | false | 監査ログばファイルんかい保存すーる(ID切り替え、SSH鍵操作んかい記録) |
gitIdSwitcher.logging.filePath | "" | ログファイルぬパス(例:~/.git-id-switcher/security.log)。空文字列ぬ場合やデフォルトパス使用 |
gitIdSwitcher.logging.maxFileSize | 10485760 | ローテーション前ぬ最大ファイルサイズ(バイト単位、1MB-100MB) |
gitIdSwitcher.logging.maxFiles | 5 | 保持すーるローテーションファイルぬ最大数(1-20) |
gitIdSwitcher.logging.redactAllSensitive | false | 有効にすーると、ログ内ぬ全部ぬ値ばマスクさびーん(最大プライバシーモード) |
gitIdSwitcher.logging.level | "INFO" | ログぬ詳細度(DEBUG, INFO, WARN, ERROR, SECURITY)。選択したレベル以上ば記録 |
gitIdSwitcher.commandTimeouts | {} | コマンドぬうぬうぬぬカスタムタイムアウト値(ミリ秒単位、1秒-5分)。例:{"git": 15000, "ssh-add": 10000} |
includeIconInGitConfigについて
iconフィールド設定した場合ぬ動作制御さびーん:
| 値 | 動作 |
|---|---|
false(デフォルト) | iconやエディタUIのみんかい表示。Git configんかいやnameのみ書き込み |
true | Git configんかいicon + nameば書き込み。コミット履歴んかいも絵文字残いん |
例:icon: "👤", name: "比嘉真" ぬ場合
| includeIconInGitConfig | Git config user.name | コミット署名 |
|---|---|---|
false | 比嘉真 | 比嘉真 <email> |
true | 👤 比嘉真 | 👤 比嘉真 <email> |
仕組み
Git configぬレイヤー構造
Gitぬ設定んかいや3つぬレイヤーあいん、下位ぬ設定ば上位が上書きさびーん:
システム (/etc/gitconfig)
↓ 上書き
グローバル (~/.gitconfig)
↓ 上書き
ローカル (.git/config) ← 最優先
Git ID Switcherや--local(リポジトリローカル)んかい書き込みさびーん。
くぬ意味:
- うぬうぬぬリポジトリぬ
.git/configんかいプロフィール保存さーるん - リポジトリぬうぬうぬんかい異なーるプロフィール維持でぃちゅん
- グローバル設定(
~/.gitconfig)や変更さらん
プロフィール切り替え時ぬ動作
プロフィール切り替えーる時、拡張機能や以下ば(順番に)実行さびーん:
- Git Config(常時):
git config --local user.nameとぅuser.emailば設定 - SSH鍵(
sshKeyPath設定時): 他ぬ鍵ばssh-agentから削除さーに、選択した鍵ば追加 - GPG鍵(
gpgKeyId設定時):git config --local user.signingkeyば設定さーに、署名ば有効化 - サブモジュール(有効時): 全部ぬサブモジュールんかい設定ば伝播(デフォルト:深度1)
- Sync Check: 適用したプロフィールが実際ぬgit configとぅ一致しちょーるか確認
Sync Check
選択したプロフィールば実際ぬgit config --localぬ値(user.name, user.email, user.signingkey)とぅ比較さーに、不一致が検出さりたらステータスバーんかい警告表示さびーん。
確認が実行さーるタイミング:
- プロフィール適用直後
- ワークスペースフォルダ変更時
- 設定変更時
- エディタウィンドウがフォーカス戻った時(500ミリ秒デバウンス)
不一致が検出さりた場合:
- ステータスバーんかい⚠️アイコンとぅ警告背景色が表示さーるん
- ツールチップんかい不一致フィールドぬテーブル表示(フィールド、期待値、実際値)
- ステータスバークリックさーに解決オプション表示:
- プロフィール再適用 — 今ぬプロフィールばgit configんかい再適用
- 別ぬプロフィール選択 — プロフィールピッカー開ちゅん
- 無視 — 次ぬ確認まで警告ば非表示
無効にすーる方法:
gitIdSwitcher.syncCheck.enabledばfalseんかい設定すーると、全部ぬsync checkが無効なーいびーん。
フォーカス戻り時ぬ確認だけ無効にしーぶさい場合や、gitIdSwitcher.syncCheck.onFocusReturnばfalseんかい設定しくぃみそーれー。
サブモジュール伝播ぬ仕組み
ローカル設定やリポジトリ単位やくとぅ、サブモジュールんかいや自動的に適用さらん。 やくとぅ、本拡張機能やサブモジュールんかいぬ伝播機能提供しょーいびーん(詳細や「上級者向け: サブモジュールサポート」見てぃくぃみそーれー)。
SSH鍵管理ぬ詳細
Git ID Switcherやssh-agent通じてぃSSH鍵管理さびーん:
| 操作 | 実行コマンド |
|---|---|
| 鍵ば追加 | ssh-add <keyPath> |
| 鍵ば削除 | ssh-add -d <keyPath> |
| 鍵ぬ一覧 | ssh-add -l |
重要: くぬ拡張機能や~/.ssh/configば変更さらん。SSH configぬ設定や手動んかい行う必要あいびーん(「クイックスタート」ぬステップ2見てぃくぃみそーれー)。
既存ぬSSH設定とぅぬ相互作用
あいねーSSH設定あーる場合、Git ID Switcherや以下ぬようんかい動ちゃびーん:
| 設定 | Git ID Switcherぬ動作 |
|---|---|
~/.ssh/configんかいIdentityFile指定 | 両方が使用可能;IdentitiesOnly yesんかい競合防止 |
環境変数GIT_SSH_COMMANDば設定 | カスタムSSHコマンド使用;ssh-agentや引き続き動ちゅん |
git config core.sshCommandば設定 | 上記とぅ同様 |
| direnvんかいSSH関連ぬ環境変数設定 | 共存可能;ssh-agentや独立さーに動ちゅん |
推奨: SSH configんかいや常にIdentitiesOnly yes設定しくぃみそーれー。くれーにゆてぃ、SSHが複数ぬ鍵試行すーるくとぅ防じゃびーん。
ぬーんちIdentitiesOnly yes?
くぬ設定無い場合、SSHや以下ぬ順序んかい鍵試行すーる可能性あいびーん:
- ssh-agentんかい読み込まりた鍵(Git ID Switcherが管理)
~/.ssh/configんかい指定さりた鍵- デフォルトぬ鍵(
~/.ssh/id_rsa,~/.ssh/id_ed25519んかい)
くれーにゆてぃ、認証失敗や意図さらん鍵ぬ使用が発生すーる可能性あいびーん。
IdentitiesOnly yes設定すーると、SSHや指定さりた鍵のみ使用さびーん。くれーにゆてぃ、Git ID Switcherんかい設定した鍵が確実に使用さーるん。
# 推奨さーる設定
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes # ← くぬ行が重要
くぬ設定にゆてぃ、github-workホストんかいぬ接続時んかいや~/.ssh/id_ed25519_workのみが使用さーり、他ぬ鍵や試行さらん。
上級者向け: サブモジュールサポート
Gitサブモジュール使用すーる複雑なリポジトリんかいや、プロフィール管理がしばしば厄介やいびーん。サブモジュール内んかいコミットすーると、Gitやそぬサブモジュールぬローカル設定使用さびーしが、明示的に設定さりてぃいらんちゃーグローバル設定(間違ったメールアドレス!)がデフォルトになーる可能性あいびーん。
Git ID Switcherや自動的にサブモジュール検出さーに、選択したプロフィール適用さびーん。
{
"gitIdSwitcher.applyToSubmodules": true,
"gitIdSwitcher.submoduleDepth": 1
}
applyToSubmodules: くぬ機能ぬ有効/無効切り替えsubmoduleDepth: どぬ深さまで適用すーるか?1: 直接ぬサブモジュールのみ(最も一般的)2+: ネストさりたサブモジュール(サブモジュール内ぬサブモジュール)
くれーにゆてぃ、メインリポジトリんかいコミットしてぃん、ベンダーライブラリんかいコミットしてぃん、プロフィールや常に正しく設定さーるん。
トラブルシューティング
SSH鍵切り替わらん?
-
ssh-agentが実行さりてぃいーる確認:eval "$(ssh-agent -s)" -
鍵ぬパスが正しいか確認:
ls -la ~/.ssh/id_ed25519_* -
macOSんかいや、一回Keychainんかい追加:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519_work
プッシュ時んかい間違ったプロフィール?
新規クローン時:
仕事用リポジトリクローンすーる時や、SSH configんかい設定したホストエイリアス使用さびーん:
# 仕事用(github-workエイリアス使用)
git clone git@github-work:company/repo.git
# 個人用(デフォルトぬgithub.com使用)
git clone git@github.com:makoto/repo.git
既存リポジトリぬ場合:
-
リモートURLが正しいホストエイリアス使っちょーる確認:
git remote -v # 仕事用リポジトリなら git@github-work:... となっちょーるべき -
必要んかい応じてぃ更新:
git remote set-url origin git@github-work:company/repo.git
GPG署名動かん?
-
GPG鍵ID確認:
gpg --list-secret-keys --keyid-format SHORT -
署名テスト:
echo "test" | gpg --clearsign -
プロフィールぬメールアドレスがGPG鍵ぬメールアドレスとぅ一致しちょーる確認
プロフィール検出さらん?
- Gitリポジトリ内んかいいーる確認
settings.jsonんかい構文エラー無いか確認- VS Codeウィンドウリロード(
Cmd+Shift+P→ 「ウィンドウの再読み込み」)
nameフィールドんかいエラー発生?
nameフィールドんかい以下ぬ文字含まりてぃいーるとぅエラーなーいびーん:
` $ ( ) { } | & < >
サービス名含めーぶさい場合やserviceフィールド使用しくぃみそーれー。
// ダメ
"name": "比嘉真 (個人)"
// いっぺー
"name": "比嘉真",
"service": "GitHub"
新しい設定項目表示さらん?
拡張機能更新しても、新しい設定項目が設定画面んかい表示さらん場合あいびーん。
解決策: マシン全体リスタートしくぃみそーれー。
VS Codeんかいぬエディタや設定スキーマばメモリんかいキャッシュしちょーり、「ウィンドウの再読み込み」や拡張機能ぬ再インストールだけやぬーらん場合あいびーん。
デフォルト値(identities等)空っぽ?
新規インストールんかいもサンプル設定表示さらん場合、Settings Syncが原因かもしらん。
過去んかい空ぬ設定保存しちょーたら、そぬ設定がクラウドんかい同期さーり、新規インストール時デフォルト値ば上書きしちょーる可能性あいん。
解決策:
- 設定画面んかい該当ぬ設定項目探すん
- 歯車アイコン → 「設定をリセット」選ぶん
- Settings Syncんかい同期(古い設定がクラウドから削除さーるん)
設計哲学
「わんねー誰やが?」 — くぬ拡張機能が答えーる唯一ぬ問い
枯山水アーキテクチャんかい設計しちょーいびーん。コアや100行んかい書けーる単純さ。 やくとぅ、残りば品質(テスト90%、ログ、タイムアウト)とぅ 意図的な制約(GitHub API連携なし、トークン管理なし)んかい費やせーるん。
貢献
貢献歓迎さびーん!CONTRIBUTING.md見てぃくぃみそーれー。
ライセンス
MITライセンス - LICENSE見てぃくぃみそーれー。
クレジット
Null;Variantにゆてぃ作成
🌴 にふぇーでーびる! 🌴