こんにちは、さるまりんです。
先日はgitでタグをつけてみました。実はいろいろ作業をしておりまして今日はその続きで行なったことについてです。
何があったかを簡単に。
開始してしばらく経ったプロジェクトがありました。そのプロジェクトは一度大きめのリニューアルを迎えて運用していたのですが、再度リニューアルすることになりました。
プロジェクト開始時、開発はdevelopmentブランチで行い、masterブランチで運用。
一度目のリニューアルをする時、development_version2というブランチを作ってそこで開発、そしてリリース時にはmaster_version2というブランチで運用を開始しました。
ここでやっていればよかったんですが、その後、開発・運用と続き、今度またリニューアルです。
これまでのやり方でいくのであれば、development_version3とmaster_version3を作って続けるなのですが、なんだか嫌だな〜と思いました。
masterブランチはどうした?
このリニューアル時、作ろうかと思ってしまったmaster_version3が意味としてはmasterブランチなのです。masterブランチにマージして動かすといってもコンフリクト(衝突)するだろうしそれを一つ一つ解決する必要もないんです。development_version3に入っているものがリニューアル時のmasterなんだから。
ずぼらなのがいけないのです。本番環境で動いてて運用されるのはあくまでmasterブランチであってほしいと思いました。
さあどうする?
やりましょう。
development_version3の内容をmasterブランチにするにはどうしたらいいのでしょう。
とあるブランチをmasterブランチにする方法
とあるブランチをmasterブランチにするにのは次のようにgitコマンドを実行することで可能です。
git checkout [とあるブランチ]
git merge -s ours master
git checkout master
git merge [とあるブランチ]
まずはgit checkout [とあるブランチ]
でローカルに[とあるブランチ]をチェックアウトします。
それからgit merge -s ours master
でmasterブランチをローカルにマージします。その時oursを使って、ぶつかった時はローカルにあるブランチ[とあるブランチ]を優先してマージします。ours。私たちのものということですね。ローカル優先です。
続いてgit checkout master
でローカルにmasterブランチを持ってきます。
そしてgit merge [とあるブランチ]
をマージ!これでmasterブランチが[とあるブランチ]と同じになります。
この先はmasterで開発、そこから作ったdevelopmentやhotfixやfeatureのブランチで作業していくことができますね。_version3とかつける必要はありません。
先日書かせてもらった記事で、なんでタグをつけたかったかというと一度目のリニューアルの時にmasterを放置してしまい、今回masterブランチを別ブランチの内容で置き換えようと思いました。そこから新しく作ることはないとしてもその時の状態を記録してすぐに取り出せるようにしたかったのです。記録としてmaster_version1なんて不思議なタグをつけています。
これでスッキリしました。
これからはあるべき形がなんなのかを考えて作業を進めていきたいと思います。
やっぱりgitは奥が深いです。
読んでくださってありがとうございます。
それではまた!