想定ケース
- GitFlowによるdevelop/masterブランチ運用。
- develop, master ブランチは保護ブランチ。基本的にはGitHub上でのPRベースでマージを行う。
feature ブランチで作業
例として newfile.txt というテストファイルを追加する作業を行う
$ git checkout -b feature origin/develop $ touch newfile.txt $ git add newfile.txt $ git commit -m 'Add newfile' $ git push origin feature
feature -> develop へマージ
GitHub で developブランチへ向けてPR作成、マージ
develop -> master へマージ
master コミットログ。featureブランチで作業したAdd newfile
コミットが入っていることを確認
masterブランチでRevertを行う
revertした masterブランチから develop へのマージを行う
ここから再度revertした作業を戻して master にマージする場合
この時点では develop -> master に差分はない
revert した内容を revert することで取り消したrevert 内容を developブランチに戻す
$ git checkout develop $ git log commit 68ce661756642e444a68d04a32d4cc760bb03510 (HEAD -> develop, origin/develop) Merge: d666db9 9609193 Author: tic40 Date: Mon Apr 8 22:30:46 2019 +0900 Merge pull request #18 from tic40/master Merge pull request #17 from tic40/develop commit 960919320a75a2399e5ea34ebee1305c846e255b (origin/master, origin/HEAD, master) Merge: 9d2b6c5 5631086 Author: tic40 Date: Mon Apr 8 22:29:03 2019 +0900 Merge pull request #19 from tic40/revert-17-develop Revert "Release" $ git revert 9609193 -m 1 [develop 7567e16] Revert "Merge pull request #19 from tic40/revert-17-develop" 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 newfile.txt $ git push origin develop
これで revert で打ち消した差分を develop に復活、master に再度マージが可能になる