staging ブランチにをパブリッシュブランチとして使用していて
検証が終わったら、masterブランチと同じ状態に戻すのですが、毎回やり方忘れるので残しておきます
TL;DR
- A ブランチから B ブランチまでの差分をリセット(同期)
-
git diff branchB..branchA > ファイル名
(B を A に同期するファイルを作成) -
git apply ファイル名
(B を A に同期する)
結論
git diff branchB..branchA > git.patch
git apply git.patch
例
stagingブランチ => masterブランチに合わせる場合
git diff staging..master > git.patch
git apply git.patch
導入例
上記にrm -rf git.patch
とgit push
を.circleci/config.yml
に追加して、定期的にstagingのお掃除させる(月曜AM9時)
sync-master-with-staging.sh
# !/bin/bash -eu
git diff staging..master > git.patch
git apply git.patch
rm -rf git.patch
git push
.circleci/config.yml
version: 2.1
jobs:
sync-master:
executor: container
steps:
- checkout
- attach_workspace:
at: .
- run: ./scripts/sync-staging-with-master.sh
workflows:
sync-master-every-monday:
triggers:
- schedule:
cron: '0 0 * * 1' # 月曜日 AM9時
filters:
branches:
only:
- staging
jobs:
- sync-master