s21gブログではmasterの他にdeployブランチがあり、下記のようなフローで運用しています。
- 普段はmasterにpushして
- deployできる状態になったらdeployにmasterの変更を反映
- deployをpush&cap deploy
ローカルでもdeployブランチとすればよかったのですが、ローカルを意識したいのでlocal_depl
リモートのoriginブランチを確認
1 git branch -a 2 * master 3 origin/HEAD 4 origin/dep loy 5 origin/mas ter
ローカルにブランチを作成
1 git branch local_deploy origin/dep loy 2 git branch -a #追加されているのを確認 3 git checkout local_depl oy
また下記のコマンド1つで、ブランチを作ってcheckoutまでをやってくれます。
1 git checkout -b local_deploy origin/dep loy
git checkout -b <new> <start-poin
t>
create a new branch <new> referencing <start-poin t>, and check it out.
http://www.kernel.or g/pub/soft ware/scm/g it/docs/us er-manual. html#manipulati ng-branche s
masterの変更をlocal_depl oyブランチに反映
1 git checkout master 2 git pull --rebase -v #masterを最新に, +verbose 3 git checkout local_deploy 4 git merge master 5 git push origin local_depl oy:refs/he ads/deploy
git merge masterの前後でちゃんとファイルが変更されているか見てみましたがちゃんとmergeできていました。また、pushの際のsrc:dstの指定の仕方がこのままでは面倒なので調べて後日また書いてみようと思います。
コンフリクトした時は修正後コミットし、上のpushコマンドを発行すればokです。
1 #(コンフリクトしたファイルを修正後) 2 git add some.file 3 git commit -m "merged from master"
posted by
satoko
on Wed 19 Nov 2008
at 13:28
with
2 comments
リポジトリの.git/configに、
[remote "origin"] push = refs/heads/local_deploy:refs/heads/deploy
を追加、とか?
アドバイスありがとうございます!試してみます♪