LoginSignup
0
0

複数のブランチ運用の PR で Conflict したときは GitHub web editor に注意

Last updated at Posted at 2024-05-23

はじめに

これは私が main / develop / feature という 3 つ以上のブランチを使い開発していた時、
GitHub の Pull Request (以下 PR) で merge しようとしたところ conflict してしまい、GitHub の Web Editor で Conflict 解消をしてしまったが故の失敗を記す。

--
GitHub は非常に便利で conflict した PR の場合、Resolve Conflict ボタンが出現し、Web Editor を使用して解決することができ、実際私はこれを使って解決し、merge "してしまった"。

そう、この Web Editor を正しく理解せず使ってしまい、merge commit をしてしまったのである。

どんなブランチ運用?

ブランチの意味

  • main: 本番環境
  • develop: 検証環境
  • feature: 機能追加など細かい作業用

ブランチの切り方

機能を作るためにブランチを切る: main -> feature
検証環境に merge する: develop <- feature
本番環境に merge する: main <- feature

何がいけなかった?

develop <- feature で PR を作成して Web Editor で conflict を解消すると、featuredevelop の変更点が全て入ってきてしまうところが大分問題だった。(feature <- develop を挟むことで conflict を解消するため)

これが起こると、develop の内容がすべて feature に入ってしまうので、mainmerge しようとすると、develop の内容がそのまままるっと入ってしまうのである。

これは大層な問題である。なぜなら開発中のデータなどが本番環境に入ることを意味しているからだ。(まぁ他にも問題あったりするけど一番はこれかと)

どうしたらいいんだ!

解決策は至って簡単。ローカル環境で merge して push してしまえばいいのである。
コマンドでもできると思うが今回は GitHub Desktop でのやり方を説明する。

以下ローカル環境での作業
develop <- feature で conflict してしまった場合、

  1. develop ブランチに切り替える
  2. Branch タブ > Merge into current branch... (Ctrl+Shift+M)
  3. ブランチ一覧が表示されるので merge したいブランチを選択し Create a merge commit
  4. conflict があれば任意のエディタを使用し conflict を解消する
  5. 解消されると Continue merge が押せるので押す
  6. Push すれば merge 完了

とまぁこんな感じである。

※ 注意点として、merge したものを push すると、作成した PR が Merged ステータスになり自動的に close されるので、レビューをしなければならないなどがあれば、先にしてもらいましょう。

おわり

いろいろな運用方法があって、いろいろな解決方法とかがあると思うけど、
きちんと理解した上でその機能を使う、ちょっとでも疑問に思ったら納得いくまで聞く/調べる、が大事。特に本番環境とかあってミスれないとき!(当たり前)

0
0
0

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
0
0