masterと別のブランチ (以下ではdevelopとする) が枝分かれしてしまったけど、
developをmasterに置き換えたい時ってあると思います。
例えば、github pagesだとmasterブランチの内容がデプロイされるので、
developブランチなどの開発用ブランチを切っておいて、ビルドしたものをmasterで管理するのが一般的だと思います。でも気が変わって、masterで開発用コードを管理したいと思うかもしれません。 (github pageからnetlifyに移行するときとか)
解決策1: ブランチをリネームする
もとのmasterの履歴が消えてしまってもいいなら、
以下のように、developブランチをmasterに名前変更するのが一番手っ取り早いです。
git branch -m master old-master
git branch -m develop master
git push -f origin master # force pushでコンフリクトを避ける
解決策2: マージ戦略 (ours
)を使う
もし、masterの情報を消さずに履歴に残しておきたいのであれば、git merge
の--strategy
オプションでマージ戦略をours
にすればよいです。
この戦略を使うことによって、マージする際にマージ元の履歴は残しつつ、マージの結果は現在のブランチの内容で上書きされた状態になります。
git checkout develop
git merge --strategy ours master
git checkout master
git merge develop
上のコマンドを実行するとコミットログは以下のようになります。
左側のパスがdevelop、右側がmasterのパスとなっているのですが、
実行後のmasterはdevelopがもともと指していたコミット (add netlify CMS setting
)と同じになっていることが (diff
)で確認できました。
* d39f112 (HEAD -> master, origin/master) Merge branch 'master' into develop
|\
| * b5d22c9 Updates
| * 81d260f Updates
| * 6b4e277 Updates
* | 4a2b0e8 Add netlify CMS setting
* | 18454da Add article
* | c2a7dc1 Add gh-pages
|/
* 4352875 Add styled-component and change layout
* 62c0b88 Make date atom component