開発をしている中でリポジトリによって設定を変えたいことがあります。コミット時の名前やメールアドレスなどを使い分けたいといったケースです。使った自動切り替えの方法について紹介します。--globalにしているかと思います。通常は問題ないのですが、リポジトリによって設定を変えたいこともあります。--localを使いリポジトリ単体の設定ができます。そのようなリポジトリが増えてくるとクローンするたびごとに設定が必要となり手間です。場合によっては設定忘れでエラーになったり、悪い場合はアカウント名を間違えてコミットすることもあり得ます。できればリポジトリをまとめるディレクトリ単位などで設定したいところです。includesを使い、設定をリポジトリごとに自動で使い分けるような仕組みを紹介します。本記事の開発環境は以下となります。追加された機能で、条件へマッチした場合に指定された設定ファイルをインクルードします。条件はgitdirとgitdir/iで指定します。パターンでパスを指定して、現在のディレクトリがパターンにマッチするかで判定されます。違いはgitdir/iが大文字小文字を区別せずに判定します。コマンドを実行します。(とはいえコマンドは分かりにくいので、設定ファイルを直接編集してます)たとえば、ホームディレクトリ以下のreposにworkとossを作り、その下に関連するリポジトリを配置しているとします。local-config-serviceそれぞれのディレクトリ名をインクルードするファイル名の一部に使い以下のようにしました。".gitconfig_oss"上記コマンドを実行した際の設定ファイル~/.gitconfigは以下のようになります。.gitconfig_oss続いてインクルードされるファイル~/.gitconfig_workと~/.gitconfig_ossを作ります。my-oss@example.org自動切り替えの確認それぞれのリポジトリ用ディレクトリ~/repos/work/と~/repos/oss/の下にリポジトリを配置して設定を確認します。user.nameを実行します。activities設定が切り替わっていること、また参照しているファイルも異なることが確認できます。今回はユーザー名とメールアドレスを切り替えましたが、他の設定項目も同様に切り替えることができます。注意点ローカルの設定が優先される設定ファイルの優先度は、そのまま適用されるのでglobalとlocalではlocalが優先されます。今回の設定はglobalにしているので、localの設定がある場合はそちらが優先されます。localシンボリックリンクの場合は両方設定しておく現在のディレクトリのパスが判定されているので、シンボリックのパスと、オリジナルのパスで有効にするには両方設定しておきます。側にあり/mnt/c/develop/repos/を~/reposにシンボリックリンクして使っています。(特殊なケースではありますが。~/repos/...のようにシンボリックリンクから移動することが多いです。このような場合にマッチするパスが変わるので両方指定しておかないと切り替えが機能しません。場合は、パスの大文字小文字を区別したくないのでgitdir/iを使うこれはドライブレターのC:とc:のレベルですでに大文字小文字の違いが出てしまうので区別しないようにします。--localで設定を追加する必要がなくなりました。アカウント名やメールアドレスは、複数の作業グループがある時に間違えコミットしないように注意が必要です。trueを設定しますが、そうするとリポジトリごとに設定が必要となります。その際に、今回の設定をしておくと特定のディレクトリ以下に配置しておくだけで設定が反映されるので便利です。貢献活動も始めたのでリポジトリのクローンをすることが増え、今回のようにディレクトリで自動に切り替わってくれるのは助かります。2017Riotz.works投稿や発言は私的なものであり、所属する企業や組織には関係ありません。HomeSlides。