状況・試したこと
gitのサーバを引っ越ししようとしています。
扱っているリポジトリにはサブモジュールが含まれており、親リポジトリ・サブモジュールとなる子リポジトリともにサーバAからサーバBに引っ越しする形となります。
リポジトリ単位で引っ越しするので、サブモジュールの向き先は親リポジトリのどのブランチからでもサーバBの子リポジトリを見れるようにする必要があります。
サーバBへのリポジトリ複製は済んでおり、親子ともにcloneはできる状態です。
また、親に含まれているサブモジュールの向き先をサーバBへ変更するため、masterブランチにて「.gitmodulesのURL値を変更してcommit/push」してあります。
[submodule "サブモジュール名"] path = サブモジュールのパス url = サーバB #←ここを変更しました branch = ブランチ名
更に「git submodule sync
」コマンドを実行すると、どのブランチからでもサーバBを向いてくれるようになりました。
一通り、望む挙動をしてくれているようには見えます。
困っていること・質問
当然ながら、上記の方法だとmaster以外のブランチに含まれる「.gitmodules」のURL値が古いままです。
それでも挙動は問題ないように見えるのですが、気持ち悪いので(+もしかすると弊害もあるかもしれないので)できれば全ブランチに反映させたいです。
こういう場合、地道に各ブランチにcommitしていくしかないのでしょうか?
<追記>
過去の状態をチェックアウトしたくなることもあり、そこからもサーバBを向いていることが望ましいので、git rebaseで全commitを修正することも検討中です。
「どのブランチの先頭をチェックアウトしても.gitmodules内のURL向き先がサーバBである状態」で妥協してもいいので、その場合は上記の「地道に各ブランチにcommit」になるのかな、と考えています。
</追記>
また、そもそもサブモジュールを持つリポジトリの引っ越しとして、方法が適切でない場合はご指摘いただけますとありがたいです。
(追記)結論
ベストアンサーとさせていただいた通り、cherry-pickを利用して各ブランチに反映することで解決といたしました。
(少人数PJでの運用なのですが:過去の状態を見たいことはやはりあるのでrebaseしたくはありましたが、過去の状態を見るといっても各自ローカルでの作業に収まりますし、その時は各自適切にやってくれ…という話に落ち着きました)
お二方とも、ありがとうございました。
回答1件
あなたの回答
tips
プレビュー