hene

hene.dev

git/config の設定を PC に合わせて切り替える

git/config の設定を PC に合わせて切り替える

git/config の設定を社用と私用の PC それぞれ別で設定できるようにした。 git/config を分割して、ホームディレクトリのパスに合わせて読み込むファイルを変えることで実現した。

git/config の設定を PC に合わせて切り替える方法

PC に合わせて切り替えるのではなく、ホームディレクトリのパスに合わせて読み込むファイルを切り替えた。 自分は、PC ごとに、ユーザー名を変えているので、ホームディレクトリのパスも変わる。

ちなみに、特定のディレクトリ以下をすべて対象にしたいときは[includeIf "gitdir:~/project/private/**"]と、ワイルドカードを使うこともできます。

.gitconfigで[includeIf]を指定しても反映されないとき | akamist blog

読み込むファイルの切り替えは、ホームディレクトリ以下すべてを対象にした。

  • [include]
    • どの PC でも共通の設定
  • [includeIf "gitdir:/Users/work_pc_user_name/**"]
    • 社用 PC のみに反映したい設定
  • [includeIf "gitdir:/Users/private_pc_user_name/**"]
    • 私用 PC のみに反映したい設定

~$HOME

チルダ(~)はユーザのホームディレクトリを指す。

#チルダ(~)って何を表すの? - Qiita

~$HOME は同じだが、"" で括られると $HOME は展開できない。 git/config ファイルの includeIf では、"" で括っているため、$HOME は利用できなかった。

$ echo ~
/Users/user_name

$ echo $HOME
/Users/user_name

$ echo "~"
~

$ echo "$HOME"
/Users/user_name

設定

dotfiles で管理している。

エイリアスを作成

dotfilessetup.sh で、自分は色々設定している。

git/config のエイリアスを貼る。

# setup.sh

# 略

## Git
mkdir -p $HOME/.config/git
ln -nfs $DOTFILES_PATH/git/$file $HOME/.config/git/config

# 略

dotfiles/git/config

[include]
  path = ~/dotfiles/git/config_common
[includeIf "gitdir:/Users/work_pc_user_name/**"]
  path = ~/dotfiles/git/config_work
[includeIf "gitdir:/Users/private_pc_user_name/**"]
  path = ~/dotfiles/git/config_private

dotfiles/git/config_common

[user]
  name = common_user
  email = [email protected]

dotfiles/git/config_work

[user]
  name = work_user

dotfiles/git/config_private

[user]
  name = private_user

確認

社用 PC

~/dotfiles/git/config_common の設定が反映される。 ~/dotfiles/git/config_work の設定で上書き。

$ echo $HOME
/Users/work_pc_user_name

$ pwd
/Users/work_pc_user_name/dotfiles

$ git config user.name
work_user

$ git config -l
user.name=work_user
[email protected]

私用 PC

~/dotfiles/git/config_common の設定が反映される。 ~/dotfiles/git/config_private の設定で上書き。

$ echo $HOME
/Users/private_pc_user_name

$ pwd
/Users/private_pc_user_name/dotfiles

$ git config user.name
private_user

$ git config -l
user.name=private_user
[email protected]

指定したディレクトリ外

~/dotfiles/git/config_common の設定のみ反映される。

$ echo $HOME
/Users/private_pc_user_name

$ cd $HOME

$ pwd
/Users/private_pc_user_name

$ git config user.name
common_user

$ git config -l
user.name=common_user
[email protected]

参考

関連記事