git cloneしたsubmoduleを自分のリポジトリで管理する

git で、プロジェクトのリポジトリ内で、別の submodule をgit cloneなどして、 更に、その submodule に変更を加えたりすると下記のような表示となり、 ファイルは変更されているけど、このファイルは submodule で他のリポジトリで管理されているファイルだからuntracked contentだよ、というようなメッセージが表示される事があります。

modified:   something/file (modified content, untracked content)

この場合、この変更が特に必要ないものならば、

$ cd something/file
$ git checkout .

で変更をなかった事にすれば元には戻るのですが、 変更が必要なもので、今後は submodule を自分のリポジトリで管理していきたい場合は .gitを削除する事で、submodule から外す事ができます。 ※注意点としては、その submodule の License には十分気をつけなければいけない事と、その submodule は元リポジトリの管理から外れるので、以降は pull してこれない等があります。

$ git rm --cached something
$ rm -rf something/.git

これで、submodule をプレーンなファイルにして(.git を削除して)、自分のリポジトリ配下のファイルとなります。

参考: http://stackoverflow.com/questions/4161022/git-how-to-track-untracked-content