Posted on Fri Oct 17 00:45:38 +0900 2008 by nabeken
注意 模索しながら書いているので、いろいろと最適なモデルを探っています。変更点は一番したのログを見てください。
使っていると、ラップトップ、デスクトップ、サーバでそれぞれテンプレートを1つ保持するのがよいという結論に至りました。
まず、手元で使っているのを git リポジトリへ入れます。最初はひとまずすべてを master へ放り込みます。
の4つの環境があります。それぞれは共通したものもあれば、環境特有の設定も入ります。1つのリポジトリで、それぞれの設定はブランチで運用してみることにします。
まず、テンプレート用ブランチを作ります。
# git clone git.example.org:Repo/moge # cd moge
ここでは、サーバ用のテンプレート用ブランチをつくってみます。
# git co -b server
ここで、サーバに不必要なファイルを削除していきます。コミットが完了したら、
# git push origin server:template/server # git branch -D server
で、pushします。同じようにして、それぞれテンプレートを作ります。
次に各環境用のブランチを作ります。今回はサーバ用テンプレートを使って作ります。この作業は対象マシンで行います。
myserver# git clone git.example.org:Repo/moge myserver# cd moge myserver# git reset --hard origin/template/server
これで、myserverのmasterがtemplate/serverに向きました。 ここから、環境特有の設定を施して、コミットします。
次に git push のデフォルトを環境特有の設定を保存するブランチへ向けます。これにより、cloneしたリポジトリの master とリモートのブランチ の対応を変更できます。(デフォルトは master:master になっている)
# git config --add remote.origin.push master:your-branch # git push
これで、 git push は引数なしで git push origin master:your-branch と同じことになります。よって、各マシンはブランチを意識することなく、コミットして、pushすることができます。
ブランチをマージしてしまうと、異なる用途で履歴が混ざったしまいます。ここでは、マージではなくコミットの変更だけを抽出して、今のブランチへ適用します。
# git cherry-pick origin/myserver
こうすることで、今のブランチに origin/myserver の HEAD のコミットが適用され、その上で再び今のブランチに対してコミットされます。