Git
ポエム

[WIP] 意図せぬMerge Hellを防ぐ

WIP

  • 本記事は執筆中です。ご意見募集中。

前説

  • gitを用いて複数人で開発する際、機能毎にブランチを切り、プルリクエストを出すことで開発をすすめることが多いと思います。
  • しかし、機能Aと機能Bを開発したあと、機能Bのブランチに機能Aのブランチをマージ(※BはAより優先度が低いとします)してpushするだけでも意図せぬMerge Hellは簡単に起こってしまいます。
  • 特に、「機能Bのブランチに機能Aのブランチをマージ」した状態で常用するとこの現象はそれなりに発生すると思います。

コマンド例です。

git checkout -b featureA
...
git push # make pull request
...
git merge featureB
git push # pull request broken

次善策

  • 自分専用のメインブランチを持ち、そこにマージする。
  • アカウントごとにリポジトリが異なる場合は良いと思いますが、リポジトリを共有している場合は非推奨と考えられます。

AやBに依存する機能Cを作る場合

  • 普通にブランチを切れば良いと思います。

AとBを両方持った状態で常用するには

  • マージすることが問題だとすれば、(以下執筆中)