git: フィーチャーブランチを落としてチェックアウトしたい

リモートのフィーチャーブランチを落としたり、削除したり...

作成日:2024-10-21, 更新日:2025-03-12

ローカル環境や別環境で、フィーチャーブランチを用意

フィーチャーブランチを作成し、対象を指定して「git push」しておく必要がある
※「アプリ: Sourcetree」を使うときはプッシュするときにプッシュ先を設定

gitコマンド

$ git push --set-upstream origin feature/〇〇〇

任意の環境でフィーチャーブランチを使う

  1. 現在のブランチを確認
  2. リモートのブランチを確認
  3. 必要なフィーチャーブランチを落とす+チェックアウト
  4. チェックアウトできたか確認

現在のブランチを確認

$ git branch

リモートのブランチを確認

$ git fetch origin
$ git branch -r

必要なフィーチャーブランチを落とす+チェックアウト

$ git checkout -b feature/〇〇〇 origin/feature/〇〇〇

フィーチャーブランチを落としているときのチェックアウト

$ git checkout feature/〇〇〇

チェックアウトできたか確認

$ git branch

まとめ

各環境

  • 自分のPC(Win)で作業するためのローカル環境
  • 確認用のステージング環境
  • 公開用の本番環境

処理の流れ

  1. ローカル環境で「ブランチ: develop」から「フィーチャーブランチ: work_xxx」を作成して、作業
  2. ローカル環境で「ブランチ: develop」から「フィーチャーブランチ: view_xxx」を作成して、「フィーチャーブランチ: work_xxx」をマージ
  3. フィーチャーブランチ: view_xxx」をリモートにpush
  4. ステージング環境で「フィーチャーブランチ: view_xxx」をpull
  5. 問題無ければ「ブランチ: develop」に「フィーチャーブランチ: work_xxx」をマージしてpush
  6. ステージング環境で「ブランチ: develop」をpull
  7. 問題無ければ「ブランチ: master」に「ブランチ: develop」をマージしてpush
  8. 本番環境に「ブランチ: develop」をpull
  9. ローカル環境の「フィーチャーブランチ: work_xxx」を削除
  10. 各環境の「フィーチャーブランチ: view_xxx」を削除
  11. リモートの「フィーチャーブランチ: view_xxx」を削除

基本「Sourcetree」というGUIを使っているのでgitコマンドはあまり使っていない...

ステージング環境で「フィーチャーブランチ: view_xxx」をpull

▼リモートリポジトリの情報取得、リモートリポジトリの確認

$ git fetch origin
$ git branch -r

▼必要なブランチを作成してチェックアウト、ローカルリポジトリの確認

$ git checkout -b feature/〇〇〇 origin/feature/〇〇〇
$ git branch

▼チェックアウト: フィーチャーブランチがあるとき

$ git checkout feature/〇〇〇

各環境の「フィーチャーブランチ: view_xxx」を削除

▼削除(-d)

$ git branch -d feature/〇〇〇

▼強制削除(-D)

$ git branch -D feature/〇〇〇

リモートの「フィーチャーブランチ: view_xxx」を削除

$ git push origin --delete feature/〇〇〇

リモートの「フィーチャーブランチ: view_xxx」を削除ができない...

リモートにあるのに削除できない...とエラーがでてきた

$ git branch -r 
  origin/HEAD -> origin/master
  origin/develop
  origin/feature/〇〇〇
  origin/master
$ git push origin --delete origin/feature/〇〇〇
error: unable to delete 'origin/feature/〇〇〇': remote ref does not exist
error: failed to push some refs to 'http://example.test/hoge/foo.git'

▼正しくはorigin/featureの「origin」がいらないそうだ...

$ git push origin --delete feature/〇〇〇