色々とコミットしてから、フィーチャーブランチを作成したくなった

複数の修正を行ったあと、本番反映せずに追加で複数の修正...というのが頻繁に起こる可能性が限りなく高い...

作成日:2025-02-05, 更新日:2025-03-24

このページの概要

  • ブランチの運用方針 - 本来なら最初に決めて作業を行う
  • 今回の問題の対応 - 何も決めずに作業を行ったので...その尻ぬぐい

ブランチの運用方針

ローカル環境で作業して、ステージング環境で確認してもらう。問題無ければ本番反映

使うブランチ

  • 本番環境
    • masterブランチ
  • ステージング環境
    • developブランチ
    • 確認用フィーチャーブランチ
  • ローカル環境
    • 作業用フィーチャーブランチ
    • 確認用フィーチャーブランチ

流れ

  1. 修正Aは「作業用フィーチャーブランチA」を作成
  2. 修正後、確認するために「確認用フィーチャーブランチ」にマージ
  3. 修正Bは「作業用フィーチャーブランチB」を作成
  4. 修正後、確認するために「確認用フィーチャーブランチ」にマージ
  5. ステージング環境を「確認用フィーチャーブランチ」にチェックアウトし、確認
  6. ~「修正A」を本番反映することが確定~
  7. developブランチ」に「作業用フィーチャーブランチA」をマージ
  8. ステージング環境を「developブランチ」にチェックアウトし、確認
  9. masterブランチ」に「developブランチ」をマージし、本番反映
  10. ~「修正B」も本番反映することが確定~
  11. developブランチ」に「作業用フィーチャーブランチB」をマージ
  12. ステージング環境を「developブランチ」にチェックアウトし、確認
  13. masterブランチ」に「developブランチ」をマージし、本番反映

確認用フィーチャーブランチ」は必要に応じて作り直す
※全修正の本番反映が完了したら削除しておくのが良さげ

今回の問題の対応

develpoブランチに複数の修正をコミットし、本番反映する前に修正が追加。
最後に追加した修正を先にコミットする必要がでてきた...

問題

develpoブランチにすべての修正がコミットされている

やりたいこと

  • 修正を行う前のdevelpoブランチが欲しい
  • 修正内容ごとにフィーチャーブランチを用意したい

やったこと

「git cherry-pick」を使うらしいけど...修正内容の件数・作業個所がそれほど多くないし、gitコマンドに精通していないので面倒だけどある程度手動で行った
※GUIとして、Sourcetreeを使ってます

  1. 保険でdevelopブランチからフィーチャーブランチを用意(※「git cherry-pick」というのを使わないなら不要?)
  2. Sourcetreeで、戻したいとこまでコミットを取り消す
  3. Sourcetreeで、強制プッシュを行う(※リモートのdevelopのほうも対応させるため)
  4. developブランチからフィーチャーブランチを作成1回目 - 確認用フィーチャーブランチ
  5. developブランチからフィーチャーブランチを作成2回目 - 作業用フィーチャーブランチA
  6. developブランチからフィーチャーブランチを作成3回目 - 作業用フィーチャーブランチB
  7. 作業用フィーチャーブランチA作業用フィーチャーブランチBをそれぞれ手動で修正
  8. 確認用フィーチャーブランチ作業用フィーチャーブランチA作業用フィーチャーブランチBをマージ
  9. ステージング環境を確認用フィーチャーブランチにチェックアウトし、確認

フィーチャーブランチが削除できない

$ git branch -d feature/new_20250205
error: The branch 'feature/new_20250205' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature/new_20250205'.

▼「-D」を使うと削除可能

$ git branch -D feature/new_20250205
Deleted branch feature/new_20250205 (was 7f0f0e1).