アップデート時の弊鯖のgit操作(全力本番運用)
ブランチ名について:
upstream_master:本家をリモートリポジトリとして追加したもの
master:自分のリポジトリのmaster
crazynewworld:弊鯖の独自変更のブランチ
コマンド:
git checkout upstream_master
git pull
git pull --tags
git checkout master
git merge upstream_master
git push origin master
git push origin --tags
git checkout crazynewworld
git rebase master
ここでコンフリクトがあったら該当ファイルを修正して、
git add <修正したファイル名>
git rebase --continue
rebaseが通ったら、例によってbundle updateとかやーんとかmigrateとかprecompileとかリスタートとかやって、最後に
git push -f origin crazynewworld
ローカルリポジトリに、本家リモートリポジトリへの参照ブランチを作っておくという手法は、次のページで学びました。
https://qiita.com/xtetsuji/items/555a1ef19ed21ee42873
こうしておくと、本家への追従がしやすいです
@hanage999 crazynewworldブランチは鯖にしかない状態?
@noellabo ちゃんと全部書いとかないといけなかったすね。サンクス!
@hanage999 いや、TLを遡りながらだと誤読するってアレで、私の読み方が悪いのですw
@noellabo いやいや、どうかそんなこと言わずに
@hanage999 んで、もっと単純化できないか考えてみました。
Hanage999/mastodonをcloneして、crazynewworldブランチになっている状態(常時そのまま)で、
cd /home/mastodon/live
git fetch https://github.com/tootsuite/mastodon.git
git rebase FETCH_HEAD
で、
bundle install, migrate, precompile, restart, 検証
git push -f origin crazynewworld
リモートブランチは登録しないで済ます。crazynewworldをデフォルトブランチにして、origin/masterは使わないので消しちゃう。
@noellabo これは貴重なアイディアいただきました。バッチリ採用させてもらおうと思います。ありがとうございます!
FETCH_HEADというキーワード、初めて知りました。便利すねこれ。
ただ、origin/masterを消しちゃうのがちょっと心配。何かあった時のために、本家のバニラをmasterとしてローカルに置いておきたい気持ちがあるんですが、それが実際に必要になるケース、ありますかね。ちょっと考えてみると、実はなさそうという気になってきた……
@noellabo あ、いえ、bundle update と yarn install と migrate と precompileをやって、systemd三兄弟のリスタートをやって、正常動作を確認した後、GitHubにpush -f してます
@hanage999 最後の手順が省略されてるだけか。push -f するやつ。