3 ポイント 投稿者 GN⁺ 2024-11-26 | 1件のコメント | WhatsAppで共有

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 キーを設定して、リモートに対して pullpush ができるようにする必要がある。
    • ~/.ssh/config ファイルで HostIdentityFile を設定することで、各リモートに応じた SSH キーを使える。
    • 同じ Hostname に対して異なる IdentityFile を使うには、Host の値を別々に設定する必要がある。
  • Git config で SSH 設定を使う:

    • 特定のリポジトリに対して別の SSH 設定を使うには、Git config で insteadOf を使って URL を置き換えられる。
    • たとえば、github.com:orgname の代わりに gh-work:orgname を使うことで、正しい SSH 設定を適用できる。
  • 考慮事項:

    • このアプローチには問題があるかもしれず、より良い方法があるかについてフィードバックが欲しい。

参考資料

  • 複数の Git アイデンティティを管理する方法に関するさまざまなブログ記事を参考にしている。

1件のコメント

 
GN⁺ 2024-11-26
Hacker Newsのコメント
  • gh-work という名前を使って SSH と Git のアイデンティティを区別する方法を説明している。gh-work でクローンしたすべての Git リポジトリは gh-work.inc の設定に従い、SSH 設定と同じ署名鍵を使用する

  • あるスタートアップで働いていたとき、毎日アイデンティティをおとぎ話のような名前に変える同僚がいた。これはバージョン管理のフォレンジックには役立たなかったが、アイデンティティ設定には何でも入れられることを思い出させる意図だったのかもしれない

  • .gitconfig にアイデンティティ用のエイリアスを追加し、リポジトリを初期化またはクローンした後に git config-company または git config-personal コマンドを実行する方法を提案している

  • ~/.ssh/config を変更する必要なく、~/.gitconfig に SSH コマンドを設定してサブモジュールを簡単に管理する方法を説明している

  • includeIfhasconfig:remote を使ってディレクトリごとに Git 設定を管理する方法を紹介している。これはリポジトリをクローンするときにも便利である

  • コンサルタントには、業務用に別のデバイス、少なくとも別の OS ユーザーを使うことを強く勧める。個人のデバイスを業務に使うのは危険かもしれない

  • NixOS と home-manager を使って Git 設定を管理する方法を説明している。hasconfig:remote 条件を使って特定のメールアドレスを設定する

  • SSH の複雑さは ~/.ssh に集約し、顧客やプロジェクトごとに別設定を含める方法を説明している。GitHub のようなホスト名がない場合はエイリアスを割り当てる

  • gitdir を使って業務と個人作業を分離する方法を説明している。hasconfig:remote はゲームチェンジャーである

  • 業務用と個人用のリポジトリを ~/dev~/src に分けて管理する方法を説明している。それぞれのパスに応じて異なる Git 設定ファイルを含める

  • 個人用および業務用の .gitconfig ファイルを設定し、メールアドレスと署名鍵を別々に設定する方法を説明している。GPG 署名を有効にしてコミットに署名する