LoginSignup
16

More than 5 years have passed since last update.

複数のgitブランチをマージする際のベストプラクティス

Last updated at Posted at 2017-04-16

概要

複数人の開発者がgitを利用して開発する時、複数の開発ブランチを作成し、ブランチを平行運用するのが一般的である。最終的に複数のブランチは一つのブランチへとマージされる必要がある。ここでは、複数の開発ブランチを最終的に一つのブランチにマージするときのマージ方法について考えてみる。

基本的なマージ方法とその課題

例えばmasterブランチから派生させた複数の開発ブランチdev1,dev2,dev3をそれぞれ別の開発者が修正し、最終的にmasterブランチにマージする際、図1の手順でマージしたことはないだろうか?

図1
git_branch_merge1.png
単純で分かりやすいマージ方法のため、git初心者の方は一度はこの方法でマージしたことがあると思う。しかし、このマージ方法には欠点がある。それは、他人の修正を上書きして消してしまうことがある。
図1の例だと、dev1が最初にmasterにマージされているので、dev2が先にマージされたdev1の修正を上書きして消してしまう、もしくはdev3が先にマージされたdev1やdev2の修正を上書きして消してしまうことがある。

他人の修正を消さないためのマージ方法

他人の修正を消さないようにマージするためには、図2のようにマージしたいブランチの修正を最初にマージするような方法を取る。

図2
git_branch_merge2.png
図2の例だと、dev2をmasterにマージする前にmasterにマージされたdev1の修正がdev2にマージされる。dev3をmasterにマージする前にdev1とdev2の修正がdev3にマージされる。dev1,dev2,dev3ブランチの修正は確実に消えることなくmasterブランチにマージされる。

残る課題

図2のようなマージ手順であれば、複数の開発者が複数のgitブランチを平行開発していても、他人の修正を上書きして消してしまうことはない。しかしながらマージする回数が増えてしまうため、その分マージにかかるコストが増える。
そこで、図2のマージ手順を自動化したgitmergeというシェルスクリプトを書いてみた。インストール方法や利用方法は複数のgitブランチのマージを自動化するgitmergeで紹介している。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16