WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

Gitによるホームディレクトリ(設定ファイル)の同期

      2015/06/13

Gitを利用してホームディレクトリにある.vimrcや.zshrcなどの設定ファイルを同期する方法の覚書

1. リポジトリ

github(もしくはgitorious)に”dotfiles”などの適当な名前でリポジトリを生成しておく。

2. .gitignoreの生成

.gitignore内で指定したファイルは、Gitの監視対象外となる。
ここではホームディレクトリすべてではなく、.から始まる設定ファイルだけを同期したいので、以下のようなホワイトリスト方式の.gitignoreを用意する。

以下、.gitignoreの記述例。

# 全てのファイルを一度、無視する。
/*
# ドットから始まる設定ファイルを無視する。
/.*

# 以下から、Gitで管理したいファイルを行頭に!を付けて列挙する
!/.vimrc
!/.vim
!/.zshrc
!/.screenrc

3. push

.gitignoreを設置したホームディレクトリに移動して、github(もしくはgitorious)にpushする。
以下はgithubにpushする例(※事前にSSHの公開鍵をgithubに追加しておくこと)。

$ cd ~
$ git init
$ git add .vimrc
$ git add .vim/
$ git add .zshrc
$ git add .screenrc
$ git commit -m '最初のコミット'
$ git remote add origin git@github.com:KohtaOkishima/dotfiles.git
$ git push -u origin master

4. clone

同期したいマシンでcloneを実行。

$ cd ~
$ git clone git@github.com:KohtaOkishima/dotfiles.git
$ ln -s dotfiles/.vimrc
$ ln -s dotfiles/.vim
$ ln -s dotfiles/.zshrc
$ ln -s dotfiles/.screenrc
$ git pull origin master

ここではホームディレクトリからシンボリックリンクを貼って、実ファイルを分離する形をとった。

微調整

OSなど環境に合わせて微調整する。
例えば、Windows で利用する場合は .vim を vimfiles ・ .vimrc を vimrc の名前でシンボリックリンクを作成するなど。

また、特定の環境でしか行わない設定などがある場合は設定ファイルを分離するなどして対応する。
例えば、zshrcを分割して管理するには.zshrcに以下のように記述する。

# ~/.zsh/以下の拡張子が.zshのファイルを読み込む
ZSHHOME="${HOME}/.zsh"

if [ -d $ZSHHOME -a -r $ZSHHOME -a \
     -x $ZSHHOME ]; then
    for i in $ZSHHOME/*; do
        [[ ${i##*/} = *.zsh ]] &&
            [ \( -f $i -o -h $i \) -a -r $i ] && . $i
    done
fi

zshrcファイルを分割して整理する- dgdgの日記

 - Git , , ,