s21gブログのgit merge作業まとめ
s21gブログではmasterの他にdeployブランチがあり、下記のようなフローで運用しています。
- 普段はmasterにpushして
- deployできる状態になったらdeployにmasterの変更を反映
- 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"
<<--
[remote "origin"]
push = refs/heads/local_deploy:refs/heads/deploy
を追加、とか?