2014.02.12gitで管理されているディレクトリ配下の特定のディレクトリをsubmoduleにしたい時の手順です。短くなりそうだけど不慣れなので色々確認しながら。submodule一般については一番下に。subDirToSwitchという構成になっているときに、dirBの下にあるdirToSwitchをsubmoduleにしたいのです。複数のサイトで共通の親テーマを使っていて、親テーマにアップデートがあった場合に、他のサイトでも親テーマを最新にしたいWordPressの公式ディレクトリに登録されていない、gitレポジトリにあるプラグインがあって、それを使いたいjsなどのライブラリを最新にしたいなどの時ですが、今回は、既存のディレクトリを置き換えるというケースで苦労したのでメモを残します。bootstrapのようにすれば、bootstrapディレクトリができて、そこがサブモジュールとなります。置き換えるときのパターン今回はディレクトリが既に存在している場合。既存のディレクトリをなくしてみる。-Aサブモジュールの追加を行う。dirB/subDirToSwitch以上で、このレポジトリ上ではサブモジュールでの管理に移ります。Indexに同じディレクトリが登録されている状態だとエラーになるのです。他の場所のレポジトリで、プルした後に、同じようにsubmodule管理したいひとつのレポジトリ上では上記でOKなのですが、よそでクローンしたりプルしたりすると、dirB/subDirToSwitchは空っぽになります。サブモジュールが登録されていない状態なので、改めてクローンしなければならないです。この場合、下記のようにします。理由は分かっていないのですが、時々ブランチの指定がなくなっている時があります。その際は、ブランチを切り替えるというか指定します。masterだと思います。仕組みとしては、レポジトリの中にレポジトリを持ちたいという時に使われます。pull/push/fetchとかすれば大丈夫です。分かりにくかったのは、親レポジトリがこの変更を、子レポジトリのコミットを参照しているだけ、というところでした。pullしたら、親レポジトリに移動して、子レポジトリのディレクトリをaddします。子レポみたいな感じです。分かりにくいのとコマンドがちょっと面倒なきがします。それでも、僕の場合、一つの親テーマをあちこちで使いまわすみたいなことになっているので、その管理のために前々から様子を探っていたのですが、今後はいちいちディレクトリを手動で置き換える(爆)ことなく作業できそうで、面倒臭さが軽減されそうです。あと、変更の履歴も追えるのでやっぱりありがたいかな。なんかもっと効率的な方法もある気がします。バッドプラクティスの指摘をもらいました!Facebookのポスト↓なので、見てみてください。GitHub)、ちょっと週末にでも、試してみたいと思ってます。新しい投稿をメールで受け取る私についてWordPressが好き。男木島移住ブログ&ポッドキャスト本書きました。絶版なんですが、ずっと中古で盛り上がっている本です。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。