Git アイデンティティの設定方法
(benji.dog)Git アイデンティティの設定方法
-
紹介: この記事では、Git の設定を通じて作業環境に合わせたアイデンティティを管理する方法を説明する。筆者は
includeIfを使って、特定の条件に応じてファイルを取り込む方法を見つけた。 -
Git 設定:
includeIfを使うと、特定のディレクトリに応じて別の Git 設定ファイルを取り込める。- たとえば、
~/code配下の Git ディレクトリには~/.config/git/personalを、~/work配下には~/.config/git/workを取り込むように設定できる。 - 各ファイルには、ユーザー名、メールアドレス、署名キーなどの情報が含まれる。
-
リモート URL ベースの設定:
hasconfig:remote.*.urlを使うと、特定のリモート URL が存在する場合に Git 設定を条件付きで構成できる。- たとえば、
github.com:orgname/**のようなリモートがあるディレクトリでは、~/.config/git/config-gh-orgを使うように設定できる。
-
SSH キー設定:
- SSH キーを設定して、リモートに対して
pullとpushができるようにする必要がある。 ~/.ssh/configファイルでHostとIdentityFileを設定することで、各リモートに応じた SSH キーを使える。- 同じ
Hostnameに対して異なるIdentityFileを使うには、Hostの値を別々に設定する必要がある。
- SSH キーを設定して、リモートに対して
-
Git config で SSH 設定を使う:
- 特定のリポジトリに対して別の SSH 設定を使うには、Git config で
insteadOfを使って URL を置き換えられる。 - たとえば、
github.com:orgnameの代わりにgh-work:orgnameを使うことで、正しい SSH 設定を適用できる。
- 特定のリポジトリに対して別の SSH 設定を使うには、Git config で
-
考慮事項:
- このアプローチには問題があるかもしれず、より良い方法があるかについてフィードバックが欲しい。
参考資料
- 複数の Git アイデンティティを管理する方法に関するさまざまなブログ記事を参考にしている。
1件のコメント
Hacker Newsのコメント
gh-workという名前を使って SSH と Git のアイデンティティを区別する方法を説明している。gh-workでクローンしたすべての Git リポジトリはgh-work.incの設定に従い、SSH 設定と同じ署名鍵を使用するあるスタートアップで働いていたとき、毎日アイデンティティをおとぎ話のような名前に変える同僚がいた。これはバージョン管理のフォレンジックには役立たなかったが、アイデンティティ設定には何でも入れられることを思い出させる意図だったのかもしれない
.gitconfigにアイデンティティ用のエイリアスを追加し、リポジトリを初期化またはクローンした後にgit config-companyまたはgit config-personalコマンドを実行する方法を提案している~/.ssh/configを変更する必要なく、~/.gitconfigに SSH コマンドを設定してサブモジュールを簡単に管理する方法を説明しているincludeIfとhasconfig:remoteを使ってディレクトリごとに Git 設定を管理する方法を紹介している。これはリポジトリをクローンするときにも便利であるコンサルタントには、業務用に別のデバイス、少なくとも別の OS ユーザーを使うことを強く勧める。個人のデバイスを業務に使うのは危険かもしれない
NixOS と home-manager を使って Git 設定を管理する方法を説明している。
hasconfig:remote条件を使って特定のメールアドレスを設定するSSH の複雑さは
~/.sshに集約し、顧客やプロジェクトごとに別設定を含める方法を説明している。GitHub のようなホスト名がない場合はエイリアスを割り当てるgitdirを使って業務と個人作業を分離する方法を説明している。hasconfig:remoteはゲームチェンジャーである業務用と個人用のリポジトリを
~/devと~/srcに分けて管理する方法を説明している。それぞれのパスに応じて異なる Git 設定ファイルを含める個人用および業務用の
.gitconfigファイルを設定し、メールアドレスと署名鍵を別々に設定する方法を説明している。GPG 署名を有効にしてコミットに署名する