Help us understand the problem. What is going on with this article?

git configをプロジェクトによって使い分ける

More than 1 year has passed since last update.

Git v2.13.0(2017/05/10リリース)でgit configにConditional includes(条件付きインクルード)という機能が実装され、特定のリポジトリに対して一括でgit configを適用できるようになりました。

会社用と個人用でプロファイルを使い分けたり、たまに使う設定をまとめて適用する場合などに役立ちそうです。

設定方法

includeIfセクションを使います。git configコマンドか、~/.gitconfigを直接編集して追記します。

$ git config --global includeIf."<条件>".path "<設定ファイル>"
.gitconfig
+ [includeIf "<条件>"]
+   path = <設定ファイル>
  • <条件>部分にはgitdir:シンタックスで対象ディレクトリを指定できる。
    • gitdir:では標準のglobに加え、**で階層をまたいだマッチも可能。
    • gitdir:~/foo/bar/のように/で終わる場合は、~/foo/bar/**と補完され子階層すべてにマッチする。
  • <設定ファイル>に記述した内容が、該当ポジトリだけに適用される。

より詳しい仕様は公式ドキュメントで確認できます。

例: 親ディレクトリによってメールアドレスを変える

普段はmyname@example.comを使っているが、いくつかのプロジェクトにはuser@work.comというメールアドレスでコミットしたい場合を考えます。対象プロジェクトをworkディレクトリの下に置き、一括で設定を適用します。

ディレクトリ:

~/
├── a/
├── b/
└── work/
    ├── x/
    └── y/

設定:

.gitconfig
[user]
  email = myname@example.com

...

[includeIf "gitdir:~/work/"]
  path = ~/.gitconfig-work
.gitconfig-work
[user]
  email = user@work.com

確認:

# プロジェクトaではグローバル設定が反映される
$ cd ~/a

$ git config user.email
myname@example.com

# work配下のプロジェクトxでは設定が上書きされている
$ cd ~/work/x

$ git config user.email
user@work.com

このようにincludeIfを使えば、特定の設定を上書きすることができます。
条件を追加して複数の設定ファイルを使い分けることもできます。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした