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]
