Gitのリモートリポジトリの名前を付け替える 〜Railsのアップグレードに対して〜
git-flowで開発をしていて、master, develop, 各フィーチャーブランチというような状況で、 大きな変更、たとえばRails3.2からRails4系に上げるなどをした場合に 通常のdevelopにマージするより、featureブランチをdevelopにしたほうがよい。
理由はこんな感じ * developで別のエラー修正をしてcommitが先に進んでいるなんてあると、マージ時にデグレード起こす危険性がある * develop進んだ部分のマージはdevelopからフィーチャーブランチに対して、ローカルで丁寧に1ファイルずつ確認するするのが安全
今回はrails3.2のdevelopのプロジェクトを、feature/rails4.2というRails4.2版のFeatureブランチをdevelopにするのを例に上げる(例に上げるというか、最近それやっただけだけど)
前提条件
動作環境
- クライアント: Mac OS X10.10
- リモートリポジトリのホスティング先: Github
- リポジトリのスタイルはgit-flowで開発
- ※ gitでリモート管理していればだいたいどの環境でも大丈夫だろう
求めるbranchの形
旧 | 新 |
---|---|
develop | rails3.2 |
feature/rails4.2 | develop |
master(旧developと同じcommit番号) | master(新developと同じcommit番号) |
作業一覧
- ローカルgitブランチのリネーム
- developをrails3.2にする
- rails4.2のフィーチャーブランチをdevelopへリネームする
- リモートgitブランチのリネーム
- 新rails3.2(旧developブランチ)ブランチをリモートブランチに置く
- 新develop(旧rails4.2ブランチ)ブランチをリモートブランチに置く
- リモートmasterブランチをdevelopと同じにする
ローカルgitブランチのリネーム
developをrails3.2にする
# developをrails3.2へリネームする > git branch -m develop rails3.2 # リネームされていることを確認 > git branch | grep rails3.2 rails3.2
rails4.2のフィーチャーブランチをdevelopへリネームする
> git branch -m feature/rails4.2 develop # リネームされていることを確認 > git branch | grep develop develop
リモートgitブランチのリネーム
ローカルのgitブランチ内ではリネームは完了しているが リモートgitブランチはまだ以下の様な状態である
- remote側には、rails3.2ブランチがまだなく、
- developには古いRails3.2版のブランチがいることになる
新rails3.2(旧developブランチ)ブランチをリモートブランチに置く
> git push origin rails3.2 > git branch -r | grep rails3.2
新develop(旧rails4.2ブランチ)ブランチをリモートブランチに置く
# -f オプションを付けて強制的にpushしないと、別ブランチなので怒られる git push origin develop -f > git branch -r | grep develop # リネーム前のfeature/rails4.2リモートブランチを削除する git push --delete origin feature/rails4.2
リモートmasterブランチをdevelopと同じにする
git masterのブランチも
ローカルのmaterブランチを削除するして、developからmasterブランチを作る
> git branch -d master # developブランチをに移動して > git checkout develop # master ブランチを再度構築する > git branch master
masterブランチを、リモートのmasterブランチにpushする
# masterブランチへ移動 > git checkout master # ローカルのmaterブランチを、リモート監視させるつつpushするが、既存のmasterブランチがあるため-f オプションを付ける > git push -u origin master -f
参考文献
ref:リモート操作 ref:[Git] ローカルとリモートのブランチ名を変更する