git/config の設定を PC に合わせて切り替える
git/config の設定を PC に合わせて切り替える
git/config
の設定を社用と私用の PC
それぞれ別で設定できるようにした。
git/config
を分割して、ホームディレクトリのパスに合わせて読み込むファイルを変えることで実現した。
git/config の設定を PC に合わせて切り替える方法
PC
に合わせて切り替えるのではなく、ホームディレクトリのパスに合わせて読み込むファイルを切り替えた。
自分は、PC
ごとに、ユーザー名を変えているので、ホームディレクトリのパスも変わる。
ちなみに、特定のディレクトリ以下をすべて対象にしたいときは[includeIf "gitdir:~/project/private/**"]と、ワイルドカードを使うこともできます。
読み込むファイルの切り替えは、ホームディレクトリ以下すべてを対象にした。
[include]
- どの
PC
でも共通の設定
- どの
[includeIf "gitdir:/Users/work_pc_user_name/**"]
- 社用
PC
のみに反映したい設定
- 社用
[includeIf "gitdir:/Users/private_pc_user_name/**"]
- 私用
PC
のみに反映したい設定
- 私用
~
と $HOME
チルダ(~)はユーザのホームディレクトリを指す。
~
と $HOME
は同じだが、""
で括られると $HOME
は展開できない。
git/config
ファイルの includeIf
では、""
で括っているため、$HOME
は利用できなかった。
$ echo ~
/Users/user_name
$ echo $HOME
/Users/user_name
$ echo "~"
~
$ echo "$HOME"
/Users/user_name
設定
dotfiles
で管理している。
エイリアスを作成
dotfiles
の setup.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]