Gitで共有しているコードをローカル固有環境で動かす

Gitリモートリポジトリ経由でWebサーバアプリケーションなどを開発している時、URL等の関係でどうしても自身のローカル環境に設定を合わせたい時がある。

今いちばんよい方法だと思っているのは、その設定ファイルをGitの対象ファイルから外す方法。

Node.jsのWebアプリケーションフレームワークSails.js | Realtime MVC Framework for Node.jsでは、ひな形を作ると config/local.js というファイル作成して、そのファイルを .gitignore 内に含めておいてくれるので、ローカルでの設定を他者とファイルを競合することなく開発することができる。

では、仕組みなどの理由でその方法が採れない時はどうすればいいか。

一時しのぎの感は否めないが、 git stash を使う方法もある。

クローンを作成し、自身のローカル用にURLを config.js に書くとする。 もちろん、このファイルは他者と共有するので、変更内容をアップロードすることは避けたい。 そんな場合に、以下の方法を取るといい。

# 変更内容をすべてステージング
git add .

# 特定のファイルをステージングから戻す
git reset HEAD config.js

# コミット
git commit -m HogeHoge

# プッシュ
git push origin master

リモートリポジトリの変更内容をローカルにプルするときは、以下の手順を取る。

# 現在の変更を退避(config.jsは変更前の状態になる)
git stash save

# リモートリポジトリから最新コードをプル
git pull origin master

# 直近の退避内容を戻す
git stash apply

退避内容の戻し方いろいろ

# 特定の退避内容を戻す(stash@{0}はスタッシュ名)
git stash apply stash@{0}

# 内容を戻すと同時に退避リストから削除したい場合(stash@{0}はスタッシュ名)
git stash pop stash@{0}

これで、はれて最新コードをローカル環境下で動かすことができる。 git stash は他にもいろいろコマンドがあるので、興味のある方はググってみてください。