月曜日, 5月 20, 2019

gitconfig で会社用アカウントと個人用アカウントを分ける

タイトル通りです。基本、こちらの Qiita の記事を参考にしていますが、色々とハマりポイントがあったので、個人のメモとして残しておきます。

[git] gitconfigで会社用アカウントと個人用アカウントを楽に使い分けする - Qiita<

参考にした記事では、以下のファイル名ですが、自分なりに変更をしました。

変更前
  • ~/.gitconfig
  • ~/.gitconfig-work
  • ~/.gitconfig-other
変更後
  • ~/.gitconfig
  • ~/.gitconfig_work
  • ~/.gitconfig_personal

この辺は、自由に決めて良いと思います。

そして、オリジナルの ~/.gitconfig から [user] の箇所を削除して、~/.gitconfig_work, ~/.gitconfig_personal それぞれに [user] を追記します。

includeIfgitdir に含まれていないディレクトリ内で git レポジトリを作成してコミットすると、ローカルのユーザ名とマシン名(例: user1@iMac.lan)などでコミットされます。

デフォルトで name, email を設定しておきたい場合は、~/.gitconfig[user] の設定を残して置くのが良いと思います。

ここまで設定をして、いざ、コミット!!

としてみると、思ったようなユーザ名でコミットされません。。。

原因は、includeIfgitdir のディレクトリ名の最後に / を付けるのを忘れていたからでした。。。

こんなミスするの、自分だけなんだろうなぁ・・・。

(´・ω・`)

そして、更に設定をしてみましたが、どうやら指定したユーザ名になる時とならない時があります。

その原因は、階層の高いディレクトリ (~/dev/) を階層の低いディレクトリ (~/dev/project1/) の後に指定しているからでした。

includeIfgitdir は、最後にマッチした条件のファイルが適用されるので、階層の高いディレクトリから順々に指定する必要があります。

最終的なファイル内容は、以下の通りです。

~/.gitconfig
# config for personal
[includeIf "gitdir:~/dev/"]
  path = ~/.dotfiles/git/.gitconfig_personal

# overwrite specific projects
# config for work
[includeIf "gitdir:~/dev/project1/"]
  path = ~/.dotfiles/git/.gitconfig_work
~/.gitconfig_personal
[user]
  name = me
  email = me@personal.example.com
~/.gitconfig_work
[user]
  name = me
  email = me@work.example.com
将来の自分のために書き残しておきます。。。

次回は、こんなポカをしませんように。。。😅

0 件のコメント:

コメントを投稿