• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

s21gブログではmasterの他にdeployブランチがあり、下記のようなフローで運用しています。

  1. 普段はmasterにpushして
  2. deployできる状態になったらdeployにmasterの変更を反映
  3. deployをpush&cap deploy

ローカルでもdeployブランチとすればよかったのですが、ローカルを意識したいのでlocal_deployという名前にしてみました。そのことで勉強になったので、書いてみたいと思います。

###リモートのoriginブランチを確認
shell>>
git branch -a

  • master
    origin/HEAD
    origin/deploy
    origin/master
    <<--

###ローカルにブランチを作成
shell>>
git branch local_deploy origin/deploy
git branch -a #追加されているのを確認
git checkout local_deploy
<<--

また下記のコマンド1つで、ブランチを作ってcheckoutまでをやってくれます。

shell>>
git checkout -b local_deploy origin/deploy
<<--

git checkout -b <new> <start-point>
create a new branch <new> referencing <start-point>, and check it out.
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#manipulating-branches

###masterの変更をlocal_deployブランチに反映
shell>>
git checkout master
git pull --rebase -v #masterを最新に, +verbose
git checkout local_deploy
git merge master
git push origin local_deploy:refs/heads/deploy
<<--

git merge masterの前後でちゃんとファイルが変更されているか見てみましたがちゃんとmergeできていました。また、pushの際のsrc:dstの指定の仕方がこのままでは面倒なので調べて後日また書いてみようと思います。

コンフリクトした時は修正後コミットし、上のpushコマンドを発行すればokです。

shell>>
#(コンフリクトしたファイルを修正後)
git add some.file
git commit -m "merged from master"
<<--

posted by satoko satoko on Wed 19 Nov 2008 at 14:32 with 2 comments
gitster gitster 01/07 19:06
リポジトリの.git/configに、

[remote "origin"]
push = refs/heads/local_deploy:refs/heads/deploy

を追加、とか?
satoko satoko 01/08 10:33
アドバイスありがとうございます!試してみます♪