gitを使ってデザイナーとの並行作業でテンプレートを修正する
例えば自分が作った index.tpl がこんなようなソースだったとする。
<div> <h1>Colored Pencils</h1> </div>まずはコミットする。
$ git add index.tpl $ git commit -m 'first commit'ここで一旦リリースするが、その時にブランチを作っておく
$ git branch design_fixその後なにか修正する。
例えば、以下のようにエラーメッセージの表示を追加した。
<div> <h1>Colored Pencils</h1> {$message|escape} </div>それをコミットする
$ git commit -a -m 'add message'それを知らないデザイナーからファイルが届いた。
divにclass指定が追加になってる。
<div class="main"> <h1>Colored Pencils</h1> </div>作っておいたデザイナー用のブランチに移動して、
$ git checkout design_fixこの状態で、デザイナーが作った index.tpl をコピーしてからコミットする。
$ git commit -a -m 'design chenged'再びマスターに戻り、マージする
$ git checkout master $ git merge design_fix以下のようにマージされた。
<div class="main"> <h1>Colored Pencils</h1> {$message|escape} </div>ここでまたすかさず次のブランチを作っておくといいかもしれない。
問題なのは、デザイナーの修正が、以下のようなものだった場合、
<div> <h1>Colored Pencils</h1> <h2>12 colors</h2> </div>マージでエラーになる。
Auto-merging index.tpl CONFLICT (content): Merge conflict in index.tpl Automatic merge failed; fix conflicts and then commit the result.そのindex.tplを見るとこんなんなってる。
<div> <h1>Colored Pencils</h1> <<<<<<< HEAD:index.tpl {$message|escape} ======= <h2>12 colors</h2> >>>>>>> design_fix:index.tpl </div>message の行と h2 の行とどっちが上でどっちが下か分からないってことだろう。
以下のように順番を決めて編集保存して、
<div> <h1>Colored Pencils</h1> <h2>12 colors</h2> {$message|escape} </div>コミットする。
$ git commit -a -m 'design fix'無事マージされた
--- a/index.tpl +++ b/index.tpl @@@ -1,5 -1,5 +1,6 @@@ <div> <h1>Colored Pencils</h1> + <h2>12 colors</h2> +{$message|escape} </div>