8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ディレクトリによってgitアカウントを自動で切り替える設定(includeIf)

Posted at

はじめに

gitのアカウントの切り替えってめんどくさいですよね?
切り替えを忘れて、仕事のgitにプライベートのアカウントでpushして直すのに苦労した方もいると思います。

そんなことが起こらないように自動でアカウントを切り替える設定を紹介します。

gitアカウントを切り替える設定

特に設定をしていないと.gitconfigの設定が適用されます。(global)

そこで、仕事用のディレクトリ(work)と私用のディレクトリ(private)によって
gitのアカウントを自動で切り替えられるように設定ファイルを追加します。

やることは2つです。

  1. .gitconfigと同じ階層に.gitconfig_work.gitconfig_privateを作成してuser.name, user.emailを設定する
  2. .gitconfigでディレクトリごとにパスを指定する

1. .gitconfig_work.gitconfig_privateを作成

下記のファイルを作成してnameとemailをそれぞれ設定します。

~.gitconfig_work
[user]
	name = workで使用したいuser.name
	email = workで使用したいglobalのuser.email
~.gitconfig_private
[user]
	name = privateで使用したいuser.name
	email = privateで使用したいglobalのuser.email

2. .gitconfigでディレクトリごとにパスを指定する

アカウントが切り替わるように.gitconfigでディレクトリごとにパスを指定する
includeIfがめっちゃ重要!

~.gitconfig
[user]
	name = globalのuser.name
	email = globalのuser.email

# workディレクトリの時に.gitconfig_workが読み込まれる
[includeIf "gitdir:~/work/"]
  path = ~/.gitconfig_work

# privateディレクトリの時に.gitconfig_privateが読み込まれる
[includeIf "gitdir:~/private/"]
  path = ~/.gitconfig_private

確認

まずはworkディレクトリ
workディレクトリの任意のプロジェクト内で下記のコマンドを打つとworkのname,emailになっていると思います。

ターミナル
$ git config user.name
workのuser.name

$ git config user.email
workのuser.email

次にはprivateディレクトリ
privateディレクトリの任意のプロジェクト内で下記のコマンドを打つとprivareのname,emailになっていると思います。

ターミナル
$ git config user.name
privateのuser.name

$ git config user.email
privateのuser.email

終わりに

これを知る前はshellに自作の関数を作って切り替えていました。
それだけでも十分感動したのですが、やっぱり自動で切り替えができる方がミスもしないのでいいですよね。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?