アップデート時の弊鯖の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
こうしておくと、本家への追従がしやすいです
それはそうと、弊鯖のmaster追従手順を見直して、GigHubのヘルプ(リンク先)に従い、下のように簡略化しました。スッキリした。tagsのpullは、これで正しいか検証していないので雰囲気。
cd /home/mastodon/live
git checkout master
git pull https://github.com/tootsuite/mastodon.git master
git pull https://github.com/tootsuite/mastodon.git --tags
git push origin master
git push origin --tags
git checkout crazynewworld
git rebase master
https://help.github.com/en/articles/merging-an-upstream-repository-into-your-fork
@hanage999 crazynewworldブランチは鯖にしかない状態?
@hanage999 最後の手順が省略されてるだけか。push -f するやつ。
@hanage999 いや、TLを遡りながらだと誤読するってアレで、私の読み方が悪いのですw
@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 いやいや、どうかそんなこと言わずに