git submodule add がうまくいかない時のメモ
Git管理しているディレクトリの中に、さらにGit管理しているディレクトリ directory/name が存在している場合に起きた現象でした。
git add .
上記のコマンドを入力しても、
git status
...
....
directory/name (untracked contents)
と表示されていました。 こちらをサブモジュールとして管理しましょうというメッセージが表示されました。
なので directory/name をサブモジュールかしていきます。
しかし、その前に direcotory/name がGit管理されていて、 git statusをした時、クリーナ状態かを確認します。
まだ編集中だったりステージング中だった場合、まず directory/name の方で
git add .
git commit
git status
クリーンな状態になったら元のディレクトリへ戻り、
以前に、git add . で追加してしまった分を解除します。
git reset
既にあった中で別にGit管理されているディレクトリ directory/name を削除します。
今回はフォルダをそのまま移動させて退避させておきました。
// 退避
mv directory/name ~/desktop/directory/name
// 退避させただけだとGitではまだ残っているので git rm で消す
git rm -r --cached directory/name
// サブモジュールとしてさっき退避させたGit管理していた directory/name のリモートリポジトリを登録する
git submodule add git@gitlab.com:user/directory/name.git directory/name
git status
//再度ステージングしてみる
git add .
//確認して正常にステージングされているか確認
git status
// コミット
git commit -m "サブモジュールの追加"
git push
これでサブモジュールが追加されました。
同じリモートリポジトリを使って git pull をしている側ではサブモジュールの更新をします。
// -iで新規なのでinitも一緒に実行
git submodule update -i
これでpushもpull側も両方正しくできればOKです。
Share this post
Twitter
Google+
Facebook
Email