gitのリモートブランチの運用
はじめに
リリース運用を久しぶりにやったのでメモがてら
github使ってます。
ローカルはWindowsでWSLからgitコマンド実行。
前提として、下記の運用
・特定日リリース用にdevelopブランチを作成
・featureブランチはdevelopブランチへプルリクし、ソースレビューOKならマージ
・テスト環境にdevleopブランチを反映し、業務部門に動作確認してもらい、OKならmasterへプルリク
・リリース時はmasterブランチへマージしたものが本番に上がる
1.ローカルにて対象ソースのディレクトリまで移動
cd /mnt/src/my_project/
2.masterに切り替え
git checkout master
3.masterに切り替わっていることを確認
$ git branch * master
4.masterを最新化(リモートブランチと同期)
git pull
5.masterとの差分がないことを確認
$ git commit On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree clean
※コミット対象がないことを確認する。コミットメッセージの入力を求められた場合はmasterブランチと同期がとれてない。
6.次の定期リリース用ブランチを作成(名前は「dev/次回定期リリース日」)
git checkout -b dev/20191018
7.リモートブランチにプッシュ
git push origin dev/20191018
8.マージされていないプルリクを新しいリモートブランチに付け替え
リストにあるプルリクを新しく作成したリモートブランチに紐づけなおす。
プルリクの番号だけだと心もとないのでgithubの画面見ながらやってます。
特定のブランチに出しているプルリクは下記のように指定してあげればOK
is:pr is:open base:dev/20191010
is:pr:プルリク
is:open:オープンなステータス
base:ブランチ名:ブランチにマージされるプルリクエスト
他にも色々フィルタに指定できるみたい。
興味ある方は以下を参考に
Searching issues and pull requests - GitHub ヘルプ
あとはそれぞれのプルリクのページで「edit」でブランチ名を1個1個変えてます。
9.リリース対象のリモートブランチ削除
この運用だとdevelopブランチがどんどんたまっていくので、
本番リリースが終わったらdevelopブランチは都度削除します。
git push --delete origin dev/20191018
おまけ
ブランチに紐づいているマージされていないプルリクの一覧をAPIでやってみる
下記を参考にしました。
Pull Requests | GitHub Developer Guide
・例)dev/20191010ブランチに出しているプルリクのID、タイトルをリスト表示
curl https://api.github.com/repos/:owner/:repo/pulls?base=dev%2F20191010 -u アカウント名:アクセスキー | jq -r '.[] | [.number, .title] | @tsv' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 95114 100 95114 0 0 219k 0 --:--:-- --:--:-- --:--:-- 219k 1234 プルリクその1 1235 プルリクその2 1236 プルリクその3 1237 プルリクその4
ポイントとしてはブランチ名に「/」などがある場合はhtlmエンコードしてあげないといけないこと。
アクセスキーは昔はURLパラメータでよかったようだが、現在はBasic認証の形式で渡さないといけないこと。
curlだと-uオプション。アクセスキーはアカウントのパスワードでも接続できるが、セキュリティ的にアウトなので、アクセスキー発行して使うのがよさげ。